hadoop アドベントカレンダー 2011 12日目 MapReduce ワークロードのパターン

hadoop アドベントカレンダー 2011、1日目及びその他空いているところ全部を担当する @ です。


今日は MapReduce のワークロードのパターンについて紹介します。


Hadoop で分散処理できる、とは言いますけど、なんだかんだで性能がいまいち出なくてリソースの使用量を調べなきゃいけなくなった、というのは誰しも経験するものです。
そして、CPU が 100% 使い切れてないとか、あるいはディスクがなぜか使われてない、とかで頭を悩ませるという経験もあるかと思います。
よし、じゃあチューニングだ、と行動するその前に、まずはこのpdfの7ページ目を読んでください。


Sort, WordCount, TeraSort の 3 種類の MapReduce ジョブのワークロードをグラフ化した図が載っています。
見て分かる通り、どれもかなり異なった結果を示しています。

Sort は Reduce 処理がやたら長く、CPU はほとんど食っていませんがディスク、ネットワークはガンガン使っています。一般的によく言われる MapReduce のワークロードのパターンですね。
それに対して WordCount は、CPU をガンガン使いますけどディスクやネットワークはあまり使いません。reduce 時間がやたら短いのも特徴的です。集計処理だから当然なのですが。
TeraSort はさらに異なり、Map 処理でガンガン CPU を使ってディスクはほとんど使わず、Reduce は逆に一気にディスクを使っています。

と、こうした基本的な3種の処理だけでも異なる傾向を示すわけです。
チューニングを始める前に、まずはこの基本処理を流してワークロードパターンが一致することと、自分達の流しているジョブがどのようなパターンに当てはまるかを確認した方がいいでしょう。


明日は、……あれ、明日って月曜?火曜?
今 SF のホテルでこの記事を書いています。月曜の夜に日本に着くのでもし月曜に書く必要があるのであれば誰か書いてください。