Cloudera Impala:Apache Hadoopで実現する、真のリアルタイムクエリ

3日間でImpalaマスターに!

本記事は、Cloudera Impala プロダクトマネージャー Justin Erickson と、Impala アーキテクト Marcel Kornacker による記事を翻訳したものです。

原文についてはこちらをご覧ください。

長期にわたる懸命なエンジニアリング作業とユーザからのフィードバックを終えて、私達はここにCloudera Impalaプロジェクトの発表をいたします。この技術はHadoopユーザにとって革命的なものの一つであり、私達はその主張を軽く扱うことはしません。

Googleが2010年にDremel論文を公開したとき、私達も他のコミュニティ同様その技術的ビジョンがリアルタイムなアドホッククエリをApache Hadoopにもたらし、従来のMapReduceバッチ処理を補完するということに触発されました。今日、私達はそのビジョンを実現し、もう少し多くのことを実現できる、完全に動作するオープンソースのコードベース、Cloudera Impalaを発表します。現在Impala のバイナリはパブリックベータの形式で公開されていますが、もし構成済みVM(仮想マシン)でテストを希望されるようであれば、私達はそれも用意しています。(すべてのダウンロードおよび文書へのリンクはこちら 。)今すぐにGithubでソースコードやテストハーネスを確認することもできます。

Impalaは使い慣れたユーザ体験を維持しながらクエリ性能の水準を引き上げます。Impalaによって、HDFSあるいはApache HBaseのどちらに保存されていたとしても、リアルタイムにデータを問い合わせ(SELECT、JOIN、そして集約関数)することができます。さらにImpalaは、Apache Hiveと同じメタデータ、SQL文法(HiveQL)、ODBCドライバとユーザインタフェース(Hue Beeswax)を使い、バッチ指向とリアルタイムクエリの間で統一された扱い慣れたプラットフォームを提供します。(そのため、Hiveユーザは小さなセットアップのオーバヘッドだけでImpalaを利用することができます。)最初のベータ版のドロップは、TextFileとSequenceFileのサポートが含まれています。SequenceFileはSnappy、GZIP、そしてBZIPで圧縮可能です(Snappyを使うと最大の性能を得ることができます)。Avro、RCFile、LZOのテキストファイル、そしてDoug CuttingのTrevniカラムナフォーマットはプロダクションドロップで計画されています。

レイテンシを避けるため、ImpalaはMapReduceを回避して、商用並列RDBMSに見られるものと非常によく似た専用の分散クエリエンジンを介してデータに直接アクセスします。結果として、クエリのタイプと設定によりますが、Hiveより1桁速い性能を出すことができます。(詳細については、以下のFAQをご参照ください。)この性能改善は、いくつかの大企業で現在数ヶ月に及ぶ現実世界のワークロードによって確認されています。

高レベルのアーキテクチャビューは以下の通りです:

 

Hadoopのデータに問い合わせを行うための方法として、他に比べていくつもの利点があります::

・データノード上のローカル処理のおかげで、ネットワークのボトルネックを回避することができる。
・単一の、オープンな、統一されたメタデータストアを利用することができる。
・高コストなデータフォーマット変換は不要であり、従って、オーバーヘッドは発生しない。
・すべてのデータは、ETLの遅延なしで、すぐに問合せ可能。
・すべてのハードウェアはImpalaのクエリに対してだけでなく、MapReduceにも利用できる。
・単一のマシンプールだけを拡張すれば済む。

さらなる技術的な詳細についてはドキュメントをお読みください。

 

最後に、皆様が興味を持つと予想されるいくつかの質問にお答えしたいとおもいます:

 

Impalaはオープンソースですか?
はい、Impalaは100%オープンソース(Apacheライセンス)です。今すぐにGithubでコードのレビューをすることができます。

 

ImpalaとDremelはどう違うのですか?
最初の、そして最も重要な違いは、Impalaはオープンソースで誰でも自由に使用できるのに対し、DremelはGoogleだけが利用可能なプロプライエタリソフトであるということです。

技術的には、Dremelは2つの技術を使用することにより、非常に大規模なデータセットに対するインタラクティブな応答時間を実現します。

・ネストしたリレーショナルデータ、あるいはネストした構造を持つデータのための新しい列指向ストレージフォーマット
・数千台のマシン上で並列にクエリを計算して結果を得ることができる、スケーラブルな分散集約アルゴリズム

後者は並列DBMSのために開発された技術を引用したもので、Impalaの制作でも触発されています。2010年の論文で説明されているDremelは単一テーブルのクエリのみを処理できるものですが、Impalaは既にフルセットのJOIN演算子をサポートしています。この機能はSQLの人気を高めた要素の一つです。

Dremelによって実証されたフルパフォーマンスの利点を実現するために、Hadoopは間もなくTrevniという効率的な列指向バイナリストレージフォーマットをサポートします。しかしDremelと違い、Impalaは一般的なファイルフォーマットをいくつかサポートしています。これによりユーザは既存のデータを “ロード”または変換することなくImpalaを実行することができます。また、もし柔軟性のためあるいは純粋に性能のために最適化したい場合、ユーザはそれを決めることもできます。

要約すると、ImpalaとTrevniの組み合わせはDremel論文で記されているクエリパフォーマンスを達成するだけでなく、SQLの機能性の点でDremelを上回るでしょう。

 

Impalaは実際にどのくらいHiveより速くなるのですか?
どのくらい性能が向上するか、その正確な量は多くの要因に依存しています:

・ハードウェア構成:Impalaは、一般的にハードウェアリソースを最大限に活用することができ、特にHiveよりも低いCPU負荷しか生み出しません。これはしばしばHiveより高い観測された集約I/O帯域幅と言い換えられます。もちろんImpalaはハードウェアの限界より速く実行することはできないので、あらゆるハードウェアボトルネックによって観測される高速化が制限されます。純粋なI / Oバウンドのクエリの場合、我々は一般的に3〜4倍の範囲内の性能向上を見ることができます。
・クエリの複雑さ:Hiveで複数のMapReduceフェーズを必要とする、あるいはreduceサイドJOINを必要とするクエリなら、単純な単一テーブル集約クエリより高速化することを確認できるでしょう。少なくとも一つのJOINを含むクエリについて、私達は7-45倍の性能向上を確認できました。
・テーブルデータのキャッシュとしてのメインメモリの有用性:クエリによりアクセスされたデータがキャッシュから取得できた場合、Impalaの優れた効率の恩恵により高速化はより劇的なものとなるでしょう。これらのシナリオにおいて、私達はHive上での単純な集計クエリが20-90倍の高速化が確認できました。

 

ImpalaはMapReduceやHive – あるいはさらに言うならば従来のデータ·ウェアハウスインフラストラクチャを置き換えるものですか?
いいえ、そうではありません。従来のデータウェアハウスのフレームワーク(例えば限定された、構造化されているデータセットに対して複雑な分析用)と同様に、MapReduceやHiveの多くの現実的なユースケース(例えば長時間実行されるデータ変換のワークロード用)であり続けるでしょう。Impalaは、ユーザーが結果のセットを速やかに取得するために、すべてのデータサイロを越えて非常に大きなデータセットと対話する必要があるユースケースをサポートしており、これらのアプローチを補完するものです。

 

Impalaのベータリリース版では、技術的な制限を持っていますか?
前述の通り、最初のベータドロップでサポートされるファイルフォーマットはTextFileとSequenceFileを含み、他のフォーマットは今後のプロダクションリリースでサポートされます。さらに、現在全てのJOINはクラスタ内の最も小さいノードのメモリ空間より大きいサイズでは行われません。最後に、現時点ではUDFは利用できません。

 

Impalaのベータリリースのための技術的要件は何ですか?
CDH4.1がRHEL/CentOS6.2にインストールされている必要があります。私達はCloudera Manager(Free 版でもEnterprise版でも可)を使ってImpalaを管理することを推奨します、なぜならCMは分散デプロイと詳細監視を自動で行ってくれるからです。

 

Impalaベータリリースのサポートポリシーはどのようになっていますか?
Clouderaの既存のお客様がバグに遭遇した場合、カスタマーサポートにチケットを上げていただければ、私達はベストエフォートで解決しようとします(訳注: 日本のお客様は、弊社パートナー様のサポート窓口を通してお問い合わせください)。既存のClouderaのお客様ではない場合、パブリックJIRAインスタンスまたはimpala-userメーリングリストをご利用ください。どちらもClouderaの社員が見ています。(訳注: 日本語でのお問い合わせをご希望であれば、cdh-user-jp メーリングリストをご利用ください)

 

Impalaを本番で一般的に利用できるのはいつでしょうか?
プロダクションドロップは2013年の第一四半期に予定されています。その時点で、お客様はCloudera Enterprise RTQサブスクリプションの形式で商用サポートを得ることができます。

私達は皆様がImpalaのソースコードをレビューし、ベータリリースを試し、VMをダウンロード、インストールすることを願っています。あらゆる場合のフィードバックについて歓迎します。 私達はImpalaをより良くするために皆様の助けが必要です。

私達はプロダクションリリースが近づくにつれてImpalaのさらなるアップデートをもたらすでしょう。

 

Impalaのリソース:
Impalaのソースコード
Impalaダウンロード(ベータ版およびVM)
Impalaのマニュアル
公開JIRA
Impalaのメーリングリスト

cdh-user-jp メーリングリスト(日本語)

 

関連記事

Cloudera データアナリスト向けトレーニング

Impalaのトレーニングを受講可能です

Impala の無料電子書籍

Impala vs Hive

Impalaより速く読めるブログ 9: ImpalaがHiveの67倍速かった話

 


Contact us

製品やサービス、サポート、トレーニングについてのより詳しい情報は、下記までお問い合わせください。

Cloudera全般(日本語)
info-jp@cloudera.com
二ユースレター購読 (日本語)
Clouderaからの日本語での二ユースレター購読希望の方は
info-jp@cloudera.com
件名: ML_SUBSCRIBE
でメールをお送りください