(1/4)2012年10月24日に発表されたばかりのHadoop用リアルタイムクエリエンジンをいち早くレビュー。HBaseに保存されているデータを対象に、アドホックなクエリを実行するためのツールです。Hadoopのディストリビューションベンダとして有名なClouderaが開発しています*1。Hadoopファミリのソフトウェアは基本的にJava言語で開発されていますが、Impalaはフロントエンドと呼ばれる部分はJavaで、バックエンドと呼ばれる部分はC++言語で開発されています。Impalaは、2012年10月24日にオープンソースとして公開されたばかりとあって、2012年11月29日の執筆時点での最新版はβ版で、バージョンは0.2です。そのため、現状では同様の用途で広く利用実績を持つHiveと比較すると、まだまだ機能不足です。Hadoop)バージョン5に、Impalaの正式版が組み込まれることになっており、今後さまざまな機能が追加される予定です*2。DataImpalaのアーキテクチャと特徴Impalaのアーキテクチャを図1に示します。Engineの3つがimpaladというプロセスで動作します。impala-state-storeは、主にはimpaladプロセスを管理するためのプロセスで、impaladは命令として受けたクエリを実行するためのプロセスです。複数のサーバ上で動作するimpaladが協調して分散処理を行います。Engineの機能を提供します。以下では、現バージョンにおけるImpalaの主な特徴をご紹介します。クエリエンジンImpalaはMapReduceを利用するのではなく、専用の分散クエリエンジンを使用します。アーキテクチャ図にも記載している通り、Hiveのmetastoreを共用するため、Impalaの利用にはHiveのインストールおよび設定が必須です。クエリ言語仕様HiveQLと似たクエリ言語仕様をサポートしていますが、現段階では完全互換ではありません。データセットHDFSに保存されたデータだけでなく、HBaseに保存されているデータに対してもクエリを実行できます。MapReduceと同様に、ユーザー認証にはKerberosを利用できます。ストレージフォーマット現在はTextFileとSequenceFileのみが利用可能です。将来的にはカラム指向のTrevniやRCFileのサポートも予定されています。レコードフォーマットSerDe(Serializer-Deserializer)はサポートされていません。現在はSnappy、Gzip、およびBzip2で圧縮されたSequenceFileのみ利用可能です。将来的には他のストレージフォーマットの圧縮やLZOによる圧縮のサポートも予定されています。Function)はサポートされていません。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。