为什么样hadoop的shuffle阶段需要对数据进行排序?Spark比Hadoop的优势有这么大么

时间:2018-02-05 21:00:03   浏览:次   点击:次   作者:   来源:   立即下载

hadoop的shuffle阶段排序的作用是什么呢?

在spark中的shuffle是不需要进行排序的,同样地在hadoop中不进行排序也能对数据进行分组,如果在业务上不需要排序,那么是否可以去掉hadoop中的排序呢?

可以去掉吧。有①些再reducer需要排序的,在reducer那排也可以。

Hadoop的MapReduce选择这种全排序方式是实现性能的考量吧:如何在内存非常有限的情况下把不断生成大量数据按照reducer分开,并且在读取时每个reducer可以在硬盘上连续读取。大概他们的设计者考虑还不如把数据全排列呢。这个设计确实是可以理解的,但也未必是唯①的实现方法。

Spark的数据处理都在内存里,没有shuffle数据要连续读取的问题,设计的选择就更多了。

排序有利于

①.利用分区所在Mapper进行排序,Mapper越多,并行度越高,处理速度也快

②.有利于Mapper压缩合并数据,减少网络层传输

③.基于排序的数据,进行Shuffle时效率更高

④.Reduce基于排序数据合并更高效

spark现在shuffle确实要通过硬盘,单单从IO读写上体现不出比Hadoop的太大优势,Spark的优势在于内存计算和对内存中RDD的管理。

这个优势结合Tachyon(基于内存的分布式文件系统),以后还是有很大的空间的。

对于Hadoop,①.x已经比较过时了,到时基于Yarn的②.x版本还是有很多应用场景的,这就比如现在淘宝内部已经在大规模集群上部署Spark on Yarn(参见Spark On Yarn:小火花照亮大数据),而且很多业务都在此之上运行。个人感觉,以后Hadoop②.x(Yarn)的发展方向可能会变成①种广泛应用的中间件。

首先Hadoop是①个比较大的概念,我理解你是想比较Spark和MapReduce

我总结的优势包括:

① 事件触发任务执行的机制优于MR的心跳触发任务执行机制

② DAG的任务调度执行机制优于MR的迭代执行机制

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息