当前位置: 首页 > news >正文

Spark和hadoop的关系

1、 Spark VSHadoop有哪些异同点?

Hadoop:分布式批处理计算,强调批处理,常用于数据挖掘和数据分析。

Spark:是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速, Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为Mesos的第三方集群框架可以支持此行为。

虽然 Spark 与 Hadoop 有相似之处,但它提供了具有有用差异的一个新的集群计算框架。首先,Spark 是为集群计算中的特定类型的工作负载而设计,即那些在并行操作之间重用工作数据集(比如机器学习算法)的工作负载。为了优化这些类型的工作负载,Spark 引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟。

在大数据处理方面相信大家对hadoop已经耳熟能详,基于GoogleMap/Reduce来实现的Hadoop为开发者提供了map、reduce原语,使并行批处理程序变得非常地简单和优美。Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map,filter, flatMap,sample, groupByKey, reduceByKey, union,join, cogroup,mapValues, sort,partionBy等多种操作类型,他们把这些操作称为Transformations。同时还提供Count,collect, reduce, lookup, save等多种actions。这些多种多样的数据集操作类型,给上层应用者提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的分区等。可以说编程模型比Hadoop更灵活。

 

2、Spark对于数据处理能力和效率有哪些特色?

Spark提供了高的性能和大数据处理能力,使得用户可以快速得到反馈体验更好。另一类应用是做数据挖掘,因为Spark充分利用内存进行缓存,利用DAG消除不必要的步骤,所以比较合适做迭代式的运算。而有相当一部分机器学习算法是通过多次迭代收敛的算法,所以适合用Spark来实现。

Spark配有一个流数据处理模型,与Twitter的 Storm框架相比,Spark采用了一种有趣而且独特的办法。Storm基本上是像是放入独立事务的管道,在其中事务会得到分布式的处理。相反,Spark采用一个模型收集事务,然后在短时间内(我们假设是5秒)以批处理的方式处理事件。所收集的数据成为他们自己的RDD,然后使用Spark应用程序中常用的一组进行处理。作者声称这种模式是在缓慢节点和故障情况下会更加稳健,而且5秒的时间间隔通常对于大多数应用已经足够快了。这种方法也很好地统一了流式处理与非流式处理部分。

相关文章:

  • java7 API详解
  • DNS与BIND
  • 小组级git服务器的搭建
  • hdu 5491(位运算)
  • easyUI datetimebox 自定义显示格式
  • genymotion在后台总是打印这个错误的log 有大神知道怎么解决吗
  • 高效快捷解决一个TextView显示多种字体的控件SpannableTextView
  • JavaScript判断各浏览器CSS前缀的两种方式
  • nginx动静分离后的一些小事故,给出处理方法
  • C#--索引
  • 观察者2
  • 使用异步消息处理更新UI线程
  • jquery 单击li防止重复加载的实现代码
  • delphi 线程同步的基本方法
  • apply,call,bind的区别
  • 08.Android之View事件问题
  • Git同步原始仓库到Fork仓库中
  • HTTP中的ETag在移动客户端的应用
  • Laravel核心解读--Facades
  • Mithril.js 入门介绍
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 数组大概知多少
  • 算法---两个栈实现一个队列
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 线性表及其算法(java实现)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 回归生活:清理微信公众号
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • #define,static,const,三种常量的区别
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (学习日记)2024.01.19
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (轉)JSON.stringify 语法实例讲解
  • (状压dp)uva 10817 Headmaster's Headache
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core跨平台微服务学习资源
  • .NetCore项目nginx发布
  • /var/log/cvslog 太大
  • @RequestBody与@ModelAttribute
  • [ solr入门 ] - 利用solrJ进行检索
  • [100天算法】-实现 strStr()(day 52)
  • [20171106]配置客户端连接注意.txt
  • [ACTF2020 新生赛]Upload 1
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C#]winform部署yolov5-onnx模型