小编给大家分享一下Hadoop中的Shuffle是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Shuffle描述着数据从Map Task输出到Reduce Task输入的这段过程。
Map端:
1、每个Map有一个环形内存缓冲区,用于存储任务的输出,默认大小100MB(io.sort.mb属性),一旦达到阀值
0.8(io.sort.spill.percent),一个后台线程把内容写到(spill)磁盘的指定目录(mapred.local.dir)下的新建的一个
溢出文件。
2、在写入磁盘前,要Partitioner,Sort,如果有Combiner(聚合),Combiner排序后在写入数据。
3、等最后把记录写完,合并全部溢出写文件为一个分区且排序的文件。
Reduce端:
1、Reduce通过Http方式得到输出的文件的分区。
2、TaskTracker为分区文件运行Reduce任务。复制阶段把Map输出复制到Reduce的内存或磁盘。一个Map任 务完成,Reduce就开始复制输出。
3、排序阶段合并Map输出,然后走Reduce阶段。
注意:在有些情况下,也有可能没有任何的Reduce,当前数据处理可以完全并行时,即无需混洗(shuffle),可能
会出现无Reduce任务的情况,在这种情况下,唯一的非本地节点数据传输是Map任务将结果写入HDFS.
以上是“Hadoop中的Shuffle是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。