2013-06-01 38 views
7

现在我有一个4相MapReduce工作如下:链接多减速器在一个Hadoop MapReduce工作

Input-> Map1 -> Reduce1 -> Reducer2 -> Reduce3 -> Reduce4 -> Output 

我注意到有ChainMapper类的Hadoop其中可以链接一些映射器变成一个大映射器,并保存映射阶段之间的磁盘I/O成本。还有一个ChainReducer类,但它不是一个真正的“链减速器”。它只能支持这样的工作:

[Map+/ Reduce Map*] 

我知道我可以设置4点MR的工作为我的任务,在过去的三年工作使用默认映射器。但是这会花费大量的磁盘I/O,因为缩减器应该将结果写入磁盘以让后续的映射器访问它。是否有其他Hadoop内置功能来链接我的减速器以降低I/O成本?

我正在使用Hadoop 1.0.4。

+0

如果可能的话,我也会对此非常感兴趣。 –

回答

2

我不认为你可以有一个减速器的o/p被给予另一个减速器直接。我会去为这个:

Input-> Map1 -> Reduce1 -> 
     Identity mapper -> Reducer2 -> 
       Identity mapper -> Reduce3 -> 
         Identity mapper -> Reduce4 -> Output 

在Hadoop的2.X系列,在内部你可以用ChainReducer减速后ChainMapper和链映射器减速前链映射器。

+0

o/p是什么意思? – Adelin

+1

@Adio它意味着输出。 –