仮想化道場

並列分散処理のフレームワークとなるHadoop 2.0 (並列分散処理の標準フレームワークを搭載)

並列分散処理の標準フレームワークを搭載

 Hadoopは、データ処理を行う中核のシステムとしてMapReduceを採用している。

 DataNodeに分割されたデータに対して、何らかの加工を行い、必要な情報を抽出するのがMap処理だ。さらに、Reduce処理では、個々のMap処理で抽出したデータを統合してデータ全体に対して特定の処理を行う。

 しかし、Hadoopがビッグデータ処理で利用されるにつれて、並列分散処理の汎用プラットフォームが必要になってきた。そこで、MapReduce部分などのデータ処理部分を全く新しく作り直したのがYARN(Yet Another Resource Negotiator)である。

 YARNは、複数のDataNodeに、ある処理を行わせるためのフレームワークで、Hadoopの代名詞ともいえるMapReduceは、プラグインのような形でYARN上で動作するようになる。つまり、MapReduceと並列分散処理を分けることで、MapReduce以外のデータ処理を行わせようとしているのだ。

 HadoopのディストリビューションをリリースしているHortonworksでは、YARN上にモジュールをプラグインすることで、MapReduce(Batch処理)以外に、Tez(Interactive処理)、HBase(ONLINE)、StormやS4(STREAMING)、Giraph(GRAPH処理)、Spark(IN-Memory処理)、OpenMPI(HPC MPI処理)、その他の処理(サーチ処理など)が行えるようにしているという。

 ここまでくると、Hadoopは単なるビッグデータ処理のプラットフォームというよりも、並列分散処理を行うOSに近くなっているといえる。ちなみにYARNは、開発当初はMapReduce 2.0と言われていたが、MapReduceだけを動かすわけではないため、別の名称が決められた経緯がある。

Hadoop 2.xでは、並列分散処理のフレームワークのYARNを導入した。この上にMapReduceが動作している。このため、MapReduceなどのモジュールを入れ替えれば、さまざまな処理が行える(HortonworksのWebサイトより)
YARNにより、MapReduceだけでなく、HBase、Stormなどの処理モジュールをプラグインとして動かすことができる(同)
YARNを使えば、さまざまな処理モジュールが追加できる。また、標準化されているため、サードパーティが独自の処理モジュールを自由に開発できる(同)

 このほかHadoop 2.0では、動作プラットフォームとしてWindows OSをサポートした点も大きな変更だ。

 今までのHadoopは、ビッグデータで利用されるソフトウェアといわれていた。しかし、Hadoop 2.0になり、YARNにより並列分散処理のためのプラットフォームになってきた。今後はビッグデータ処理だけではなく、今まで単一サーバーでは処理しきれなかった問題を高速に処理できるプラットフォームとして利用されるだろう。

 またMapRのように、Javaで記述されているHadoopのHDFSをC++で書き直しているところもあるし、Clouderaでは、Hadoop上でリアルタイムにSQLを実行できるImpalaを提供している。

 データ処理に関しても、統計解析やデータマイニングを扱うことを考えたR言語をHadoopで利用できるようにしたりと、データサイエンティストのためのツールも徐々にそろい始めている。

 このようにHadoopは、大きな広がりを見せているといえる。また、ClouderaやHortonworksなどがリリースしているディストリビューションでは、管理ツールを含め、Hadoopを使いやすくしている。このあたりは、オープンソースのApache Hadoopでは、ビジネスで利用するにはいろいろと難しい面があるのだろう。

 Hadoopの進化していく方向を見ていると、並列分散処理OSを構築する方向に進んでいるように思える。ただ、パフォーマンス面などを考えていくと、これだけのソフトウェア スタックをJavaでプログラミングするは、疑問を持つ。もし、OSへと進むのであれば、LinuxやWindowsのOSの基本機能として、Hadoopの仕組みが吸収されていくのかもしれない。

山本 雅史