Shuffle工作机制

Hadoop生态系统中,Shuffle是MapReduce的核心机制,它肩负了从Map到Reduce的底层过程。

Shuffle工作机制_第1张图片

  1. 一个切片input split对应一个mapper,mapper将数据写入到环形缓冲区;
  2. 这个环形缓冲区默认是100M,当它达到默认阀值80%的时候,它会将数据溢写(spill)到磁盘,在写磁盘过程中,map继续输出被写到缓冲区,如果在此期间缓冲区被填满,map会阻塞直到缓冲区被填满;
  3. 溢写到磁盘的时候它并不是简单地将数据溢写,而是先进行分区(Partitioner有自定义就用自定义的,没有就用HashPartitioner),再在每个分区里对数据进行合并(Combiner);
  4. 最后它会将数据合并成一个大文件,并且是相同分区号的数据进行合并;
  5. 合并之后每个分区里面的数据再按照Key2进行合并,计算完成之后向上级提交,Hadoop1.0是TaskTracker,Hadoop2.0是MrAppMaster;
  6. Reducer通过心跳线程不停地到上级去取任务,1.0是越级到JobTracker来取,2.0是到MrAppMaster来取,Reducer得到映射关系之后通过http下载数据,下载很多小文件,再进行合并,作为输入,计算之后输出到HDFS。

你可能感兴趣的:(Hadoop,Hadoop)