shuffle什么意思 shuffle为什么是随机


大数据作为当今热门的一个行业 , 想要学习好大数据 , 要了解的东西有很多 , 而shuffle作为MapReduce框架中最关键的一个流程 , 是很重要的 。所以今天我们就来了解一下关于shuffle过程详解 , 下面一起来看看吧 。
Map阶段处理的数据如何传递给reduce阶段 , shuffle在其中起到了很关键的作用 , shuffle分布在MapReduce的map阶段和reduce阶段 。

Map的shuffle过程:主要包括输出、排序、溢写、合并等步骤 , 如下图所示:
1、collect:每个Maptask都将数据输出到该Maptask对应的环形缓冲区Kvbuffer中 , 使用环形数据结构是为了更有效地使用内存空间 , 在内存中放置尽可能多的数据 。
2、Sort:在对数据进行合并的同时 , 会进行排序操作 , 由于 MapTask 阶段已经对 数据进行了局部的排序 , ReduceTask 只需保证 Copy 的数据的最终整体有效性即可 。
3、Spill:当内存中的数据量达到了一定的阀值的时候 , 会生成一个溢写文件 , 将环形缓冲区中的原始数据写入该文件 , 按照上一步排序的元数据 , 溢写时对原始数据进行排序 。
由于一个Maptask处理的数据可能需要多次溢写才能写完 , 所以每个Maptask可能生成多个溢写文件 。最终剩在环形缓冲区中的数据达不到阈值条件 , 会强制刷出生成一个溢写文件 。
4、Merge:在 ReduceTask 远程复制数据的同时 , 会在后台开启两个线程对内存到 本地的数据文件进行合并操作 。
5、Copy:Reduce 任务通过HTTP向各个Map任务拖取它所需要的数据 。每个节点都会启动一个常驻的HTTP server , 其中一项服务就是响应Reduce拖取Map数据 。当有MapOutput的HTTP请求过来的时候 , HTTP server就读取相应的Map输出文件中对应这个Reduce部分的数据通过网络流输出给Reduce 。
6、排序合并sort-merge:每个分区的数据从多个maptask拖取过来后进行归并排序 , 合并成一个文件 , 最后各个分区的文件通过分区组件的逻辑 , 划分到不同的reducetask 。
以上就是关于shuffle过程的详解了 , 不知道大家是否有了一定的了解 , 大数据中有很多的框架结构 , 一些重要的点是需要各位了解透彻的 。如果想了解更多详情 , 请点击成都加米谷大数据官网吧!
【shuffle什么意思 shuffle为什么是随机】

    推荐阅读