0

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

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

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

4

1 回答 1

0

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

请参阅 javadoc 中的以下语句。

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

于 2013-08-28T18:29:06.067 回答