Hadoopの得意分野と不得意分野
超大規模なデータを安価に扱いたければ、確かにHadoopは効率的だ。しかし、数10テラバイト、数100テラバイト、あるいはペタバイトを越えるデータを100ノード、1,000ノードと大規模なHadoopクラスタで活用しているのは、一部の先進的な企業に限られる。100ノードを越えるようなHadoopクラスタ環境を構築し運用するのは、それなりに手間も技術も必要だ。
Hadoopは大量にデータを蓄積し、そのデータに対してバッチ処理を施すのは得意分野だ。一方でリアルタイムな処理や、反復処理、連続したデータの変換処理、試行錯誤しながらのアドホック分析などには向いていない。
HadoopのMap Reduceの並列分散処理では、入力データをストレージのHDFS(Hadoop Distributed File System)から読み出し、複数のノードで分散処理して結果をHDFSに書き出す。この一連の処理を1回実施するだけならば、数多くのノードで分散することで高速に処理ができる。
しかし、1度で終わらないような繰り返し処理が必要になると、何度もHDFSから読み込み出して分散処理を行い、結果をストレージに書き出す必要が出てくる。そうなればディスクIOやノード間のネットワークIOが増大し、効率的な処理が行えなくなってしまう。
ビッグデータの活用で今注目を集めている領域は、機械学習や高度な統計処理などが挙げられるだろう。さらには、IoTなどから発生するデータをリアルタイムに処理したいという要求も多い。機械学習や高度な統計処理では、まさに反復処理や連続したデータの変換処理などが必要になる。つまりHadoopだけでは、これらを効率的に処理することができない。