Hadoopシステム構築のノウハウ

2010年6月25日(金)
清田 陽司

ロジック開発コストの削減

MapReduceフレームワークでは、map関数とreduce関数を記述するだけで、スケール・アウト可能な分散バッチ処理を記述できます。しかし、バッチ処理のロジックを実現するために複数のMapReduce処理を組み合わせなければならない場合も多く、その実装は必ずしも簡単ではありません。

例えば、RDBMSにおけるJOIN操作をMapReduceで実装するのは、かなり面倒です。また、MapReduceフレームワークに習熟したエンジニアを確保することも、現時点では難しいのが実情です。例えて言えば、MapReduceフレームワークによる開発は、マシン語による開発に似ているかも知れません。

この問題を解決するには、マシン語に対する高級言語のような存在、すなわちデータ処理を抽象化したメタ言語が有効です。現在、MapReduceロジックをより簡単に記述できるメタ言語実行環境として、「Pig」と「Hive」が注目されています。PigもHiveも、Apache Hadoopプロジェクトのサブ・プロジェクトとして開発が進められているオープンソースです。

Pigは、米Yahoo!を中心に開発が進められている実行環境です。バッチ処理のデータ・フローを表現する、Pig Latinと呼ばれる言語で記述されたプログラムを実行できます。Pig Latinで記述したロジックは、MapReduceに自動的に変換され、Hadoop上で実行されます。米Yahoo!社内で実行しているMapReduceジョブの大部分は、Pig Latinによって開発されていると言われています。

Hiveは、米Facebookが開発した、Hadoopベースのデータ・ウエアハウス(DWH)です。HiveもPigと同様に、Hive QLと呼ぶシンプルなクエリー言語環境を提供しています。Hive QLは、SQLによく似た文法を持っていて、HDFS上に搭載した巨大なデータを簡単に操作できます。実際には、Hive QLで書かれたクエリーは、MapReduceに変換されて実行されます。

HiveがPigと大きく違う点は、スキーマを定義する機能の有無にあります。Hiveは、スキーマの定義機能を持っているため、よりRDBMSに近い感覚でコーディングできます。米Facebookでは、ロジック開発の生産性向上を目的に、積極的にHiveを活用しているとのことです。

PigやHiveなどのメタ言語実行環境には、現在のところMapReduceフレームワークを直接利用したプログラミングほどの自由度はありません。また、Pig LatinやHive QLによるクエリーの実行速度は、MapReduceフレームワークの直接利用と比べると若干劣ります。しかし、Hadoopクラスタ上で動かすロジックの生産性を大幅に向上させることができる点は、大きな魅力です。エンタープライズ用途への活用においては、ぜひとも利用を検討すべきでしょう。

おわりに

本連載では、Hadoopをエンタープライズ用途に活用するために必要となる基礎知識を伝えてきました。

Hadoopは、プロジェクトの開始から5年目に入り、エンタープライズ用途での活用事例も続々と報告されるようになってきています。現時点で不足している機能も、数々のサブ・プロジェクトによって補われつつあります。今後、情報爆発時代の新たなインフラとして、さらに発展することが期待されます。

株式会社リッテル 上席研究員 兼 東京大学情報基盤センター 助教

情報検索システムの研究者。情報リテラシーの向上に役立つサービスの実現を目指し、自然言語処理技術のアプリケーション、Web情報と図書館情報の融合などのテーマに取り組んでいる。Wikipediaやブログなどの膨大なデータ処理にHadoopを活用している。そのノウハウを国内法人向け Hadoopセミナーにて公開中。京都大学大学院情報学研究科博士課程修了。博士(情報学)。
http://www.littel.co.jp/
http://twitter.com/kiyota_yoji

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています