Shuffle的设计
为什么需要Shuffle?
Shuffle的本质是基于磁盘划分来解决分布式大数据量的全局分组、全局排序、重新分区【增大】 等问题
因为单台机器的资源处理不了分布式大数据量全局分区/排序/分组
所以需要通过Shuffle对每一台机器的数据构建一个Task来做分区的标记(通过Hash或Ranger分区器)这样所有的数据被标记后就可以根据标记进入指定分区,实现全局分区/分组/排序功能
举例说明
假设有一个HDFS文件,分成三个Block块,每台机器上有一个Block
node1-Block1:(a,1)(c,9)(c,6)(d,3)
node2-Block2:(b,4)(a,8)(d,2)
node3-Block3:(b,7)(d,5)
需求:在分布式大数据量计算过程中,需要对所有数据进行全局分组 / 全局排序 / 重新分配
全局分组:相同单词的放在一组
- node1-Block1:(a, [1,8])(c, [9,6])
- node