sql >> データベース >  >> NoSQL >> HBase

Cloudera Impala:Apache Hadoopでのリアルタイムクエリ、実際の場合

    長年にわたる熱心なエンジニアリング努力とユーザーからのフィードバックを経て、ClouderaImpalaプロジェクトを発表できることを非常に嬉しく思います。このテクノロジーはHadoopユーザーにとって革新的なテクノロジーであり、私たちはその主張を軽視していません。

    Googleが2010年にDremelの論文を発表したとき、従来のMapReduceバッチ処理を補完するリアルタイムのアドホッククエリ機能をApache Hadoopにもたらすという技術的ビジョンに、他のコミュニティと同じように刺激を受けました。本日、私たちはそのビジョンを実現する完全に機能するオープンソースのコードベースを発表します。これは、ClouderaImpalaと呼ばれます。 Impalaバイナリがパブリックベータ形式で利用できるようになりましたが、プリベイクされたVMを介してImpalaを試運転したい場合は、そのうちの1つも用意しています。今すぐGithubでソースコードとテストハーネスを確認することもできます。

    Impalaは、使い慣れたユーザーエクスペリエンスを維持しながら、クエリパフォーマンスの水準を引き上げます。 Impalaを使用すると、HDFSまたはApache HBaseに保存されているかどうかに関係なく、SELECT、JOIN、集計関数などのデータをリアルタイムでクエリできます。さらに、Apache Hiveと同じメタデータ、SQL構文(Hive SQL)、ODBCドライバー、およびユーザーインターフェイス(Hue Beeswax)を使用して、バッチ指向またはリアルタイムのクエリに使い慣れた統合プラットフォームを提供します。 (そのため、Hiveユーザーはセットアップのオーバーヘッドをほとんど必要とせずにImpalaを利用できます。)最初のベータ版のドロップには、テキストファイルとSequenceFilesのサポートが含まれています。 SequenceFilesは、Snappy、GZIP、およびBZIPとして圧縮できます(最大のパフォーマンスを得るにはSnappyをお勧めします)。 Avro、RCFile、LZOテキストファイル、Parquetの列形式など、追加の形式のサポートが本番環境で計画されています。

    レイテンシーを回避するために、ImpalaはMapReduceを回避して、商用の並列RDBMSに見られるものと非常によく似た特殊な分散クエリエンジンを介してデータに直接アクセスします。その結果、クエリのタイプと構成に応じて、Hiveよりも桁違いに高速なパフォーマンスが得られます。 (詳細については、以下のFAQを参照してください。)このパフォーマンスの向上は、実際のワークロードでImpalaを数か月間テストしたいくつかの大企業によって確認されていることに注意してください。

    以下に、アーキテクチャの概要を示します。

    このアプローチには、Hadoopデータをクエリするための代替アプローチに比べて多くの利点があります。

    • データノードでのローカル処理のおかげで、ネットワークのボトルネックが回避されます。
    • 単一のオープンで統合されたメタデータストアを利用できます。
    • コストのかかるデータ形式の変換は不要であるため、オーバーヘッドは発生しません。
    • すべてのデータは、ETLの遅延なしに、すぐにクエリ可能です。
    • すべてのハードウェアは、ImpalaクエリとMapReduceに使用されます。
    • スケーリングに必要なマシンプールは1つだけです。

    技術的な詳細については、ドキュメントをお読みになることをお勧めします。

    最後に、人気が出ると予想されるいくつかの質問に答えたいと思います。

    Impalaはオープンソースですか?
    はい、Impalaは100%オープンソースです(Apacheライセンス)。今日Githubでコードを確認できます。

    ImpalaはDremelとどう違うのですか?
    最初の主な違いは、Impalaはオープンソースであり、誰でも使用できることですが、DremelはGoogle独自のものです。

    技術的には、Dremelは、次の2つの手法を使用して、非常に大きなデータセットに対してインタラクティブな応答時間を実現します。

    • ネストされたリレーショナルデータ/ネストされた構造を持つデータ用の新しい列型ストレージ形式
    • 分散型のスケーラブルな集計アルゴリズム。これにより、クエリの結果を数千台のマシンで並行して計算できます。

    後者は、並列DBMS用に開発された手法から借用されており、Impalaの作成にも影響を与えました。単一テーブルのクエリしか処理できなかった2010年の論文で説明されているDremelとは異なり、ImpalaはSQLを非常に人気のある要因の1つである結合演算子のフルセットをすでにサポートしています。

    Dremelによって実証された完全なパフォーマンス上の利点を実現するために、HadoopにはまもなくParquetと呼ばれる効率的な列型バイナリストレージ形式が導入されます。ただし、Dremelとは異なり、Impalaはさまざまな一般的なファイル形式をサポートしています。これにより、ユーザーはデータを「ロード」または変換することなく、既存のデータに対してImpalaを実行できます。また、ユーザーは、柔軟性を最適化するか、純粋なパフォーマンスを最適化するかを決定できます。

    要約すると、ImpalaとParquetは、Dremelの論文で説明されているクエリパフォーマンスを実現しますが、SQL機能で説明されているものを上回ります。

    ImpalaのクエリはHiveのクエリよりもどれだけ高速ですか?
    パフォーマンスの向上の正確な量は、いくつかの要因に大きく依存します。

    • ハードウェア構成:Impalaは通常、ハードウェアリソースを最大限に活用でき、特にHiveよりも少ないCPU負荷を生成します。これは、多くの場合、Hiveよりも高い総I/O帯域幅に変換されます。もちろん、Impalaはハードウェアが許可するより速く進むことはできないため、ハードウェアのボトルネックがあると、観察されるスピードアップが制限されます。純粋にI/Oバウンドのクエリの場合、通常、パフォーマンスは3〜4倍の範囲で向上します。
    • クエリの複雑さ:Hiveで複数のMapReduceフェーズを必要とするクエリ、またはリデュース側の結合を必要とするクエリは、たとえば、単純な単一テーブルの集計クエリよりも高速化されます。少なくとも1つの結合があるクエリの場合、パフォーマンスが7〜45倍向上したようです。
    • テーブルデータのキャッシュとしてのメインメモリの可用性:クエリを介してアクセスされるデータがキャッシュから出てくる場合、Impalaの優れた効率のおかげで、スピードアップはより劇的になります。これらのシナリオでは、単純な集計クエリでも、Hiveよりも20倍から90倍高速化されています。

    ImpalaはMapReduceまたはHiveの代わりになりますか、それとも従来のデータウェアハウスインフラストラクチャの代わりになりますか?
    いいえ。 MapReduceとHive(たとえば、長時間実行されるデータ変換ワークロードの場合)だけでなく、従来のデータウェアハウスフレームワーク(たとえば、限られた構造化されたデータセットの複雑な分析の場合)にも、引き続き多くの実行可能なユースケースがあります。 Impalaはこれらのアプローチを補完するものであり、ユーザーがすべてのデータサイロにわたって非常に大きなデータセットを操作して、焦点を絞った結果セットをすばやく取得する必要があるユースケースをサポートします。

    Impalaベータリリースには技術的な制限がありますか?
    前述のように、最初のベータドロップでサポートされるファイル形式には、テキストファイルとSequenceFilesが含まれ、他の多くの形式が次の製品リリースでサポートされる予定です。さらに、現在、すべての結合は、クラスター内の最小ノードのメモリスペース以下のメモリスペースで実行されます。本番環境では、結合は集約メモリで行われます。最後に、現時点ではUDFは使用できません。

    Impalaベータリリースの技術要件は何ですか?
    RHEL /CentOS6.2にCDH4.1がインストールされている必要があります。 Cloudera Manager(FreeまたはEnterprise Edition)を使用してImpalaを展開および管理することを強くお勧めします。これは、分散展開と監視の詳細を自動的に処理するためです。

    Impalaベータリリースのサポートポリシーは何ですか?
    既存のClouderaのお客様でバグがある場合は、カスタマーサポートチケットを発行していただければ、ベストエフォートベースで解決を試みます。 Clouderaの既存のお客様でない場合は、Clouderaの従業員によって監視されるパブリックJIRAインスタンスまたはimpala-userメーリングリストを使用できます。

    Impalaが本番環境で一般的に利用できるようになるのはいつですか?
    2013年の第1四半期に生産量の減少が計画されています。お客様は、その時点でClouderaEnterpriseRTQサブスクリプションの形で商用サポートを受けることができます。

    Impalaのソースコードを確認したり、ベータリリースを調べたり、VMをダウンロードしてインストールしたり、または上記の任意の組み合わせを利用したりすることをお勧めします。すべての場合において、フィードバックをいただければ幸いです。 Impalaをさらに良くするためにあなたの助けが必要です。

    本番環境に近づいたら、Impalaに関する最新情報をお知らせします。 (更新:Impala 1.0についてお読みください。)

    インパラリソース:
    –Impalaソースコード
    – Impalaダウンロード(ベータリリースとVM)
    –Impalaドキュメント
    –パブリックJIRA
    –Impalaメーリングリスト
    –無料Impalaトレーニング(スクリーンキャスト)

    (2012年10月30日追加)Impalaに関するサードパーティの記事:
    – GigaOm:Hadoopのリアルタイムクエリは、ビッグデータ分析へのアクセスを非民主化します(2012年10月22日)
    –有線:Man Busts Out of Google、トップシークレットクエリマシンの再構築(2012年10月24日)
    – InformationWeek:ClouderaがリアルタイムHadoopクエリをデビュー(2012年10月24日)
    – GigaOm:ClouderaがSQLをHadoopのファーストクラスの市民にする(2012年10月24日)
    – ZDNet: ClouderaのImpalaがHadoopをSQLとBIにもたらす(2012年10月25日)
    –有線:Marcel Kornackerプロファイル(2012年10月29日)
    – Dr. Dobbs:Cloudera Impala –ペタバイトを高速で処理思考(2012年10月29日)

    MarcelKornackerはImpalaの建築家です。 Clouderaに参加する前は、GoogleのF1プロジェクトのクエリエンジンの主任開発者でした。

    ジャスティンエリクソンはインパラのプロダクトマネージャーです。


    1. Docker内でRedisサーバーと別のアプリケーションを実行するにはどうすればよいですか?

    2. MongoDBとCassandra

    3. mongodbでエクスプレスとパスポートを使用したnodejsのシンプルなログインページ

    4. パスワードの検証/Mongooseスキーマによるパスワードの確認