Advertisement

YARN分析(八):Reduce Shuffle过程分析

阅读量:

前言

在Hadoop Job的执行流程中,Shuffle阶段始终是一个较为隐秘的环节。由于该阶段属于Reduce过程中的一个子阶段,因此常常被人们所忽视。然而,Shuffle在整个Map Reduce流程中承担着数据传递的关键作用。正因这一环节具有重要性,Hadoop将其设计为可插拔的模块,用户可根据自身应用的特性,自行编写和定制相应的Shuffle模块代码。此前对相关代码进行了初步的浏览,因此整理部分内容以记录所学到的知识。

Shuffle过程解析

Reduce阶段的起始步骤为Shuffle过程,其本质可被理解为一种"远程数据复制"的操作,所复制的数据来源即为map任务所产生的中间输出结果。在Reduce阶段能够继续执行后续处理之前,首要条件是获取到这些数据。通常情况下,map任务的中间结果文件会被存储在当前Task运行所在的节点上,因此reduce task在复制数据时需要通过网络传输完成。若数据量较大,则会占用一定比例的网络带宽资源。

Shuffle模块源码分析

以下将从源代码的角度对这一模块的部分内容进行简要分析。由于该阶段属于Reduce过程,因此需要定位到与Reduce Task相关的代码部分进行查看。

复制代码
 @Override

    
   @SuppressWarnings("unchecked")
    
   p

全部评论 (0)

还没有任何评论哟~