R&Dトレンドレポート

第12回Hadoopのまとめ─MapReduce処理をやってみよう[完結編]

HadoopはGoogleのGFSおよびMapreduceのオープンソースクローンとして誕生しました。インターネットコンテンツが、誰でもいつでもアクセスできるようになり利便性が上がる一方で、過去の資産も含めるとその情報量は今や膨大なものとなっています。そのような一方向に増え続けるデータへの対抗手段がGoogleの技術であり、Hadoopであります。

前回まで5回にわたってhadoopの概要、導入、そして実際のMapReduce処理を行ってきましたが、実際のインターネット上のデータを使用することでより具体的にイメージが持てたのではないでしょうか。

Hadoopを言い表すキーワードとしては

  • 分散ファイルシステム
  • 容易な分散計算フレームワーク
  • 特定の言語に依存しない作り

が挙げられます。

分散ファイルシステム

分散ファイルシステムを用いることで、スケールアウトを前提とした設計となっており、拡張性が非常に高くなっています。さらにレプリケーションを設定することで、耐障害性も高くなり、大規模データを前提としたシステム構築に優れている。

分散計算フレームワーク

分散計算フレームワークの入出力にキーとバリューという単純な構造を採用している。そのため、プログラミングロジックをくむ際に複雑な入出力を考慮に入れなくて良い。MapとReduceという明確に2つのフェーズが分かれているため、どこで何を実装するべきか、というのが直感的に理解しやすい。

特定の言語に依存しない

ストリーミング方式を使うことで、JAVAという言語に縛られることなく分散計算を実行することが可能となる。いわゆるスクリプと言語での実装も可能なため、学習コストが低く、既存のシステムへの適用も容易となっている。

これらが何をもたらしたかというと、大規模ストレージと高速なバッチ処理フレームワークです。また、安価なPCを採用することで低コストでのスタートアップも可能となります。データの規模が増えれば増えるほど処理コストも比例して増大しますが、それを解決する見事な解であると言えるでしょう。

Hadoopの今後

平成21年度 産学連携ソフトウェア工学報告書の公表についてというWebページでは、各社クラウド時代のコンピューティングというキーワードで報告書をあげていますが、NTTデータはHadoopを取り上げています。

その中身は相当濃いものとなっており、

  • Hadoop環境導入
  • MapReduceプログラミング(ソース付き)
  • Hadoopを使用する上でのボトルネックポイント
  • チューニングポイント
  • システム/ネットワーク構成
  • 運用での監視

と、導入から運用までさまざまなツールを用いて解説を行っています。

これはHadoopが大規模計算フレームワークとしての実用性を実証する資料であり、Hadoopを使用する上での教科書的な存在となる気がします。Yahoo!や楽天、クックパッドといった企業がHadoopを使用していることは有名ですが、NTTデータのような割と堅い(?)企業が本腰を入れて取り組んだことが印象深いといえるでしょう。

また、米クラウデラ社が独自のチューニングを行ったHadoopパッケージを開発しており、より簡単な導入、ビジュアライズされた監視ツールなどを提供しています(こちらはRPMパッケージも提供されているのでCentOSであれば簡単にインストールができます⁠⁠。このように、Hadoopはより一般的なソリューションとして活用されていくのではないかと思われます。

おまけ

本連載を執筆中にCGIとJavaScriptを組み合わせたHadoop風なモノを思いつきで開発してみました。

まだ体裁が整ってないのですが、次回はおまけ編としてHadoopならぬ、Jadoop(邪道?)を紹介させてください。

おすすめ記事

記事・ニュース一覧