検索
連載

Hadoop用リアルタイムクエリエンジン ImpalaのポテンシャルをレビューしたDatabaseテクノロジレポート(1/4 ページ)

2012年10月24日に発表されたばかりのHadoop用リアルタイムクエリエンジンをいち早くレビュー。次期CDHに組み込まれる予定の新機能をどう使いこなす?

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Impalaとは

 Impalaは、Googleが社内で利用しているDremelとF1にインスパイアされて開発されたオープンソースソフトウェアで、HDFS(Hadoop Distributed File System)あるいはApache HBaseに保存されているデータを対象に、アドホックなクエリを実行するためのツールです。Hadoopのディストリビューションベンダとして有名なClouderaが開発しています*1

 Hadoopファミリのソフトウェアは基本的にJava言語で開発されていますが、Impalaはフロントエンドと呼ばれる部分はJavaで、バックエンドと呼ばれる部分はC++言語で開発されています。

 Impalaは、2012年10月24日にオープンソースとして公開されたばかりとあって、2012年11月29日の執筆時点での最新版はβ版で、バージョンは0.2です。そのため、現状では同様の用途で広く利用実績を持つHiveと比較すると、まだまだ機能不足です。

 しかし、今後リリース予定のCDH(Cloudera's Distribution including Apache Hadoop)バージョン5に、Impalaの正式版が組み込まれることになっており、今後さまざまな機能が追加される予定です*2


Impalaのアーキテクチャと特徴

 Impalaのアーキテクチャを図1に示します。


図1 Impalaのアーキテクチャ ClouderaのWebサイトで公開されている(Marcel Kornacker氏とJustin Erickson氏によるブログ記事を参照)

 図1に示す黄色のブロックがImpalaの機能に相当し、State Storeがimpala-state-storeというプロセスで、Query PlannerQuery CoordinatorQuery Exec Engineの3つがimpaladというプロセスで動作します。

 impala-state-storeは、主にはimpaladプロセスを管理するためのプロセスで、impaladは命令として受けたクエリを実行するためのプロセスです。

 複数のサーバ上で動作するimpaladが協調して分散処理を行います。ODBC経由でクエリを受けたimpaladがQuery PlannerとQuery Coordinatorの機能を提供し、処理対象のデータが保存されているHDFS、あるいはHBaseと同じサーバで動作するimpaladがQuery Exec Engineの機能を提供します。

 以下では、現バージョンにおけるImpalaの主な特徴をご紹介します。

クエリエンジン

 ImpalaはMapReduceを利用するのではなく、専用の分散クエリエンジンを使用します。ただし、アーキテクチャ図にも記載している通り、Hiveのmetastoreを共用するため、Impalaの利用にはHiveのインストールおよび設定が必須です。

クエリ言語仕様

 HiveQLと似たクエリ言語仕様をサポートしていますが、現段階では完全互換ではありません。

データセット

 HDFSに保存されたデータだけでなく、HBaseに保存されているデータに対してもクエリを実行できます。

ユーザー認証

 Hadoop MapReduceと同様に、ユーザー認証にはKerberosを利用できます。

ストレージフォーマット

 現在はTextFileとSequenceFileのみが利用可能です。ただし、将来的にはカラム指向のTrevniやRCFileのサポートも予定されています。

レコードフォーマット

 SerDe(Serializer-Deserializer)はサポートされていません。

ファイル圧縮

 現在はSnappy、Gzip、およびBzip2で圧縮されたSequenceFileのみ利用可能です。ただし、将来的には他のストレージフォーマットの圧縮やLZOによる圧縮のサポートも予定されています。

ユーザー定義関数

 ユーザー定義関数(UDF:User Defined Function)はサポートされていません。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る