Hadoop ChainMapper和ChainReducer如何减少磁盘IO

时间:2013-08-28 13:41:31

标签: hadoop

我想链接多个mapreduce作业,即先前mapreduce作业的输出是下一个mapreduce作业的输入。因为我的输出非常大而且磁盘IO过载非常繁重,所以我想找到替代解决方案来减少IO瓶颈。我找到了ChainMapper / ChainReducer API。该文件提到了以下属性

"使用ChainMapper和ChainReducer类可以组合看起来像[MAP + / REDUCE MAP *]的Map / Reduce作业。这种模式的直接好处是磁盘IO的大幅减少。"

但我不太明白为什么使用ChainMapper / ChainReducer会减少磁盘IO。为了减少IO,我应该如何使用这两个API?

1 个答案:

答案 0 :(得分:0)

根据我的理解,即使您有多个映射器,链映射器也会将它们视为单个任务。任务完成后,没有中间写入。

请参阅javadoc的以下声明。

Mapper类以链式(或管道)方式调用,第一个的输出成为第二个的输入,依此类推,直到最后一个Mapper,最后一个Mapper的输出将被写入任务的输出