Hadoop バージョン1(v1)の問題点を見ていこう。大きく三つの問題がある。うち二つは、各マシンのリソースを管理しているJobTrackerに起因するものだ。

 一つめは、MapReduce以外の分散処理フレームワークを同居させて利用する場合のリソース管理の問題だ。Hadoopの利用が進み、MapReduceに向かない処理がわかってきた。例えば、グラフ処理や機械学習など MapReduceを繰り返し実行するような計算で、分散ファイルシステムに毎回アクセスが生じて性能が出ない。

 そのため、MapReduceとは異なる分散処理フレームワークが多く提案されている。例えば、繰り返し計算を効率的に実行できる「Apache Spark」や、集約演算を高速に実行できる「Cloudera Impala」および「Presto」だ。また、ストリーミング処理向けには「Apache Storm」がある。いずれもオープンソースで提供されている。

 これらの分散処理フレームワークは用途に応じて使い分けることが望ましい。例えば、長時間かかるバッチ処理にMapReduceを使い、アドホッククエリーにはCloudera Impalaを、機械学習など反復処理にはApache Sparkを利用する。このように使い分ける場合、HDFSに保存されている大量データの移動を抑えるにはMapReduce、Cloudera Impala 、Apache Sparkを同一マシンに配置する必要がある。

 しかし、同一マシンに配置することによって新たな問題が生じる(図1)。MapReduce以外のフレームワークも、JobTracker相当のリソース管理機能を独自に備え、独立してリソース管理を行っているので、全体の計算リソースの利用効率を把握できないのだ。

図1●複数の分散処理フレームワークを利用する問題点
図1●複数の分散処理フレームワークを利用する問題点
[画像のクリックで拡大表示]