Dec 25, 2012

Node-level aggregation の概要


本投稿は Hadoop Advent Calendar 25日目(#hadoopAC12jp)です.現在投稿中のパッチである MAPREDUCE-4502 の内容の日本語資料がないのに気づいたので,その説明をします.

現在取り組み中のパッチの内容


Node-level aggregation は,MapTask 毎に部分集約(Combine処理)を行うための機能です.従来の Combine 処理よりも広い範囲で適用できるため,より高速な処理が可能となります.

設計


MRAppMaster が各ノードを調停して,MapTask にNode-level aggregation を開始するように指示します.Combine 処理は重いので,処理によっては Combine 処理によるデータの圧縮効果よりもオーバヘッドの方が大きくなってしまう場合があります.そこで,現在の設計では,しきい値を超えたら Node-level aggregation を開始するようにしています.また,耐故障性も担保できるように設計しています.


改造箇所


1. Mapper
2. Reducer
2. MRAppMaster(JobTracker)
3. Mapper-MRAppMaster間の Umbilical Protocol

だいたい全部ですね^^;

ユーザからどう見えるか


設計上はフラグで本機能をON/OFF切り替えできるようになっています.最終的には,

conf.enableLocalAggregation();

としたら本機能が有効になるようにする予定です.

ベンチマーク


現在とっている最中なので,乞うご期待^^;

終わりに


現在 Hadoop の標準機能に入れようと取り組んでいる最中の Node-level Aggregation について書きました.

本機能を実装する上で,Hadooper の皆様の声をぜひ聞いておきたいというところが本音です.もし何か要望がありましたら,気軽に @oza_x86 までお気軽にご連絡ください.よろしくお願いします.