1. 定义
shuffle是指map任务输出到reduce任务输入的过程。
2. 目的
在Hadoop集群中,大部分map任务与reduce任务在不同的节点执行。因此,reduce任务在执行时需要跨节点去获取map的输出结果。如果集群上有很多作业,那么网络资源消耗会很严重,需要最大化减少不必要的资源。另外,如果map的输出和reduce的输入只是简单的磁盘读写操作,那么磁盘IO时间将对作业完成时间产生较大影响,应该减少磁盘IO的影响。
所以,shuffle阶段的目的有两个:
<1>在跨节点获取map输出时,尽可能减少网络带宽不必要的消耗。
<2>优化内存使用,减少磁盘IO操作。
3. shuffle过程解析