impala速攻レビュー!!

米国で開催されている Strata Conf + Hadoop World 2012 で、ついに Cloudera Impala(Public Beta) が発表されました!

Impalaとは?

Cloudera Impala (http://www.cloudera.com/content/cloudera/en/products/cloudera-enterprise-core/cloudera-enterprise-RTQ.html)はオープンソースのソフトウェアで、一言で言えばリアルタイムクエリエンジンです。Hiveを使っている方やSQLに馴染んでいる方には利用し易いSQLライクなHiveQLを利用して、数秒でHDFSまたはHBaseに格納されたデータを照会できます。
ImpalaはApache HiveのメタデータやHiveQL、ODBCドライバ、Beeswaxを利用します。Hiveと違い、MapReduceを使用するのではなく、独自の処理フレームワークを使用することで、数倍〜数十倍の性能改善となっています。正直、Hiveとの単純な比較をしてみましたが、爆速です。最初に動かしたときは興奮して鼻血が出る程でした。
もちろんHadoop同様に全ての人にとってメリットがある万能なソフトウェアではないでしょうが、例えば今まで10分かかっていたクエリが1分で終わるようなイメージです。Hiveを利用している一部の人にとってはまさに驚愕的なレベルで登場したと言っても過言じゃないでしょうか?
Impalaの詳細はこのあと徐々に情報が公開されていくことになるでしょう、現時点では @shiumachi 氏のブログにも情報が公開されているので、参照されると良いでしょう。

オープンソース万歳!

CDHの他のコンポーネント同様にオープンソースで公開されています(現時点で既にhttps://github.com/clouderaに公開されています!)FlumeやSqoop同様に、いずれはApacheプロジェクトになることが期待されますね。何より現時点でパブリックベータ(ダウンロードはこちら https://ccp.cloudera.com/display/SUPPORT/Downloads。机上の空論ではなく動作します。β版ですし一部の機能はこれから実装されていく予定ですが、実際に動作するこのImpala、多くの方に体感して欲しいですね。

検証

さて、手元の仮想マシン環境で実際に動かしてみましょう。
環境:VMWare上の仮想マシン。1CPU、メモリ3GB割り当て
Hadoop: CDH4.1を疑似分散環境を使用(時間がなかったので。。)
個人的な意見ですが、ソフトウェアって目的に応じた使い方があり、現実のワークロードと乖離した単純なベンチマークだけで比較することにそれほど意味はないと思っています。世の中に公開されているデータって、自社製品の都合が良いようなワークロード、チューニングをしていることも多いですし、そもそも公平な比較ができないことも多いですしね。でも今回はあえて実行します。
これはClouderaの開発者向けトレーニングで実際に行う演習から抜粋したもので、データはミネソタ大学のMovieLens Data Sets(http://www.grouplens.org/node/73)の10milionのデータを利用しました。
データは予めCSV形式に変換し、CREATE TABLEしてテーブルを作成後、LOAD DATA LOCAL INPATHでロードしておきます。
検証1:
SELECT count(name) FROM movie;
Hive: 27.548 sec
Impala: 0.237 sec
検証2:
SELECT id, name, year, COUNT(1), AVG(rating)
FROM movie JOIN movierating
ON movie.id = movierating.movieid
GROUP BY id, name, year;
Hive: 190.414sec
Impala: 13.434sec
さぁ、次は皆さんの環境で試して下さい!
ダウンロード (https://ccp.cloudera.com/display/SUPPORT/Downloads
※(2012/10/24 22:26時点) サイトがリニューアルされたせいか、アクセスが集中しているせいか、レイアウトがぶっ壊れてるようです


2012/10/25更新:@fragileyouth さんの指摘によりスペルミスを修正 < ありがとうございます!!