2013-06-01 37 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它意味着輸出。 –