Hadoop框架主要模块包括:
- Hadoop Common
- Hadoop分布式文件系统 HDFS
- Hadoop YARN
- Hadoop MapReduce
Spark速度快,可以进行批处理,然而它真正擅长的是流处理,交互式查询和机器学习
Hadoop中的MR和Spark的主要区别在于,MapReduce使用持久存储,而Spark使用弹性分布式数据集RDD
附录一个关于MapReduce的解释
我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。
在Hadoop中,MapReduce是分步对数据进行处理的: ”从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等…
Spark和Hadoop计算的区别
Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。所谓的内存计算技术也就是缓存技术,把数据放到缓存中,减少cpu磁盘消耗。Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。多个任务之间的操作也就是shuffle过程,因为要把不同task的相同信息集合到一起,这样内存的速度要明显大于磁盘了。
性能
Spark之所以如此快速,原因在于它在内存中处理一切数据,然而它还可以使用磁盘来处理未全部装入到内存的数据
Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。
易用性
支持Scala语言,Java,Python,Spark SQL(类SQL),Spark还有一种交互模式,开发人员和用户都可以获取查询操作的即时反馈。
成本
Spark已证明在数据多达PB情况下也能轻松自如,它被用于数量只有十分之一的机器上,对100TB数据进行排序的速度比MR onHadoop快3倍
兼容性
MapReduce与Spark相互兼容,
数据处理
MapReduce是一种批量处理引擎。MapReduce以顺序步骤来操作,先从集群读取数据,然后对数据执行操作,将结果写回到集群,从集群读 取更新后的数据,执行下一个数据操作,将那些结果写回到结果,依次类推。Spark执行类似的操作,不过是在内存中一步执行。它从集群读取数据后,对数据 执行操作,然后写回到集群。