Skip to content

Latest commit

 

History

History
15 lines (12 loc) · 761 Bytes

mapreduce_2_3_sortphase.md

File metadata and controls

15 lines (12 loc) · 761 Bytes

#SORT Phase


  • 在经过COPY Phase之后,部分文件在内存中,部分文件在硬盘中

  • 显然这在不同的介质中,而且不是有序的

  • 那么如何处理这些不同介质并且排序呢?

  • 使用MergeQueue,边排序边输出(详细的的介绍在Merge中)

  • 边给Reducer输入数据,边执行排序

  • 全部排序好在输出会降低运行效率

  • 此时需要满足磁盘上的文件个数小于10个,如果文件个数太多,那么还需要不断的Merge

  • 并且内存中的数据数据量小于最大可用内存的X%,X是由mapred.job.reduce.input.buffer.percent指定

  • 由于有些文件是在硬盘中,需要封装成KV对,才能让reduce来读取

  • RawKVIteratorReader将硬盘中的文件封装成KV形式