最後に12ノードの環境で、複数のHadoopジョブを実行した場合の処理性能について説明する。通常は、1台のサーバー上で複数の処理を同時に実行すると、リソースの競合が発生して性能が低下する。Hadoopで同様の問題が発生するのか調べた。

 検証では、同一のHadoopクラスター上で同一処理内容のHadoopジョブを二つ動作させた。キャッシュの影響を排除するために、各ジョブは別のデータを処理するようにしている。

 結果はキーの分布が一様な場合とべき分布の場合で異なった(図9)。

図9●ジョブの同時実行<br>Hadoopクラスター上で、複数のジョブを同時に動かすと複数のジョブ全体のスループットは向上する。キーがべき分布の場合は、単体で実行した場合に比べて2ジョブを同時実行したときのスループットが54%向上した
図9●ジョブの同時実行
Hadoopクラスター上で、複数のジョブを同時に動かすと複数のジョブ全体のスループットは向上する。キーがべき分布の場合は、単体で実行した場合に比べて2ジョブを同時実行したときのスループットが54%向上した
[画像のクリックで拡大表示]

 キー分布が一様なデータを使いジョブを二つ同時に実行した場合、ジョブを単独で実行した場合と比べて、性能は2%向上しただけだった。

 これに対して、キーをべき分布にしたデータで、検証(3)の対策2を実施していないジョブを二つ同時に実行すると、単独実行の場合に比べて、2ジョブ同時実行の性能が54%向上した。

 理由は図10のように考えられる。キー分布が一様な場合はジョブ1およびジョブ2のMapperとReducerはいずれもフルに全リソースを使う。その結果、各ジョブの処理時間はいずれも約2倍に延び、2ジョブ同時実行の性能は1ジョブ単独実行とほぼ同じになる。

図10●複数ジョブを同時実行した場合にスループットが上がる理由<br>キーの分布に偏りがある場合、特定のReducerのみが動作する状態が発生する。この状態ではリソースを有効活用できるので、二つのジョブを同時実行するときのスループットは、単独実行のそれを上回る
図10●複数ジョブを同時実行した場合にスループットが上がる理由
キーの分布に偏りがある場合、特定のReducerのみが動作する状態が発生する。この状態ではリソースを有効活用できるので、二つのジョブを同時実行するときのスループットは、単独実行のそれを上回る
[画像のクリックで拡大表示]

 一方、キー分布に偏りがあるときは、図8で示したように、特定のReducerのみが動作する状態が生まれる。

 その状態では、Hadoopは二つのジョブを別々のリソースで実行するように調整するため、処理時間は延びない。その結果、2ジョブ同時実行の性能は1ジョブ単独実行より向上する。

 実際のシステムでは、異なる特性のジョブを複数同時に実行するので、キー分布が偏ったときのように、同時実行で全体の性能向上が見込めるだろう。ジョブごとに、リソースを占有するタイミングがずれるためだ。