Hadoop用リアルタイムクエリエンジン Impalaのポテンシャルをレビューした:Databaseテクノロジレポート(2/4 ページ)
2012年10月24日に発表されたばかりのHadoop用リアルタイムクエリエンジンをいち早くレビュー。次期CDHに組み込まれる予定の新機能をどう使いこなす?
Hadoop MapReduce、Hiveとの関係
Impalaは、Hadoop MapReduce*3やHive*4を完全に置き換えるためのものではありません。Hadoop MapReduceとHiveの組み合わせは、既に多くのシステムで安定的に運用されており、特に現時点では大規模なバッチ処理やELT処理(抽出/ロード/変換)にはMapReduceの方が適しているといえます。
Impalaはメモリを可能な限り活用するため、性能を最大限に引き出すためには、処理の対象となるデータ量に対して十分なメモリ空間を必要とします。
一方、MapReduceはMap処理とReduce処理の間でいったんディスクに書き込みを行うため、Impalaと比べて少ないメモリ空間でも性能劣化なく処理できます。つまり、Impalaはデータ量の増大による性能劣化を許容しつつ、処理の高速化を追求していると筆者はとらえています。
また、Hiveがインストールおよび設定されていなければ動作しないことからも想像できる通り、両者を補完的に利用することが前提となっているといえます。
*3 MapReduceのJava実装Apache Hadoopを使ってみた(@IT)
*4 Hadoop+Hive検証環境を構築してみる(@IT)
Impalaのメリット:アクセスログ解析の視点から
筆者らは、MOBYLOG(モビログ)というアクセスログの解析、および広告効果測定のサービスを提供しています。収集したWebサイトのアクセスログの解析処理には、現在、Hadoop MapReduceとHiveを利用しています。
具体的な処理の代表例としては、大量のアクセスログから同一ユーザーのセッションを抽出するようなクエリを多数実行してするケースが挙げられます。
しかし、Hadoop MapReduce処理は開始・終了処理のオーバーヘッドが大きいせいか、予算の許す限り多くのサーバでHadoopクラスタを構築していても、ログのファイルサイズによっては所定の時間内に処理を終わらせられないことがあります。そこで、同じサーバ台数で、より高速に処理できる仕組みを模索していたのです。
Impalaは、Hadoop MapReduceとHiveを組み合わせたクエリ処理と比べて、7〜45倍の性能向上が検証で確認されています*5。
この検証が事実であれば、例えば統計解析手法を駆使してデータ分析を行うデータサイエンティストがアドホックなクエリの実行する際に、Hiveの代わりにImpalaを利用することで、処理時間を短縮でき、業務効率の大幅な向上が期待できます。
そこで、筆者らは自社のサーバ環境にHadoop MapReduceとHive、およびImpalaのクラスタ環境を構築し、Hadoop MapRreduce+HiveとImpalaの性能をベンチマークしました。
Impalaをテストするには、Red Hat Enterprise LinuxまたはCentOS 6.2(64ビット版)上のCDH(4.1.0以降)と、Hive、MySQLが導入されている必要があります。CDHのドキュメントなどはClouderaのWebサイトを参照ください(Impalaのチュートリアルはこちらを参照してください)。
次ページからベンチマークの詳細、結果を紹介していきます。
*5 Cloudera Impala:Apache Hadoopで実現する、リアルのためのリアルタイムクエリ(ClouderaのWebサイト)
Copyright © ITmedia, Inc. All Rights Reserved.