OSSの分散処理フレームワーク「Hadoop MapReduce」は便利ですが、少しハードルが高い面もあります。MapReduceをより使いやすくするツールが「Pig」と「Hive」で、大容量データを簡単に処理したいケースで威力を発揮します。個人でも手軽にPigとHiveを“体感”する方法を解説します。(NTTコムウェア 研究開発部 川前 徳章)

 クラウドコンピューティング時代の代表的な分散処理技術「Hadoop」がいま、熱い注目を集めています。Hadoopは、米Google社が開発した大規模ファイルシステム「Google File System」、および大量のデータを高速に処理できる分散処理フレームワーク「MapReduce」を、Googleが発表した論文を基に実装したオープンソースソフトウエアです。Google File Systemに対応するのが「Hadoop Distributed File System(HDFS)」で、MapReduceに対応するのが「Hadoop MapReduce」です。紛らわしいですが、本記事で「MapReduce」と書く場合は、オープンソースであるHadoop MapReduceを指します。

 MapReduceの特徴の一つに、従来は開発が困難だったデータの分散処理を、「Map関数」と「Reduce関数」の2つのフェーズだけで実現できる点があります。“分散処理”と聞くと「高価な開発マシンを大量に揃えられる大学研究室や大企業でしか使えないのでは」というイメージがあるかもしれません。ですが実は個人であっても、比較的安価なマシンでクラスタを構成し、その上でデータを分散処理することが可能です。またMapReduceを使っているマシンが1台でも、処理速度は落ちるものの、クラスタを組んでいる場合と同じデータを同一プログラムで処理できるというメリットもあります。

 ただしMapReduceのロジックは開発言語の「Java」で記述する必要があります。Javaでの開発は一般に、工数がかかるというデメリットがあります。そこで、より簡単に分散処理を行えるようにしたオープンソースのツールが登場しました。それが本連載で紹介する「Pig」および「Hive」なのです。

Pigとは何か

図1●Pigの利用イメージ
図1●Pigの利用イメージ
[画像のクリックで拡大表示]

 今回はPigの使い方を解説します(図1)。PigはMapReduceのラッパーであり、簡単なデータフローを記述するだけで、Map関数とReduce関数に変換し、Hadoop上で分散処理を実行することが可能です。

 Pigは2008年の9月に米Yahoo!社により公開されたオープンソースソフトウエアで、現在は、Hadoopサブプロジェクトとして開発が進められています。Pigは、処理言語である「PigLatin」と、その実行環境で構成されています。

 PigLatinではデータのロードとストア、フィルタリング、結合、ソート、及び集約といった処理フローを記述できます。例えば、あるWebサイトのアクセスログのデータを扱う場合、「サイトのページごと、あるいは日別にサイトのアクセスランキングを集計する」といったフローを、PigLatinで記述します。その記述内容からHadoopのMap関数やReduce関数に変換し、Hadoop上でデータの分散処理を実行します。