Cloudera Impala Seminar Jan. 8 2013

2,798 views
2,726 views

Published on

2013年1月8日に開催したImpalaセミナー:Impalaのエンジニア、Alan Choiの資料(日本語)です。

Published in: Technology

Cloudera Impala Seminar Jan. 8 2013

  1. 1. Impala: A Modern SQL Engine for Hadoop Alan Choi | Cloudera, Inc. January 8, 20131 CONFIDENTIAL - RESTRICTED
  2. 2. Impala 概要: 目的● 汎用的なSQLクエリエンジン: ・ 分析/トランザクションの両方のために動作 - 百万分の一秒から数時間もかかるようなクエリをサポート● Hadoop内で直接実行: ・ Hadoopで広く使用されているファイルフォーマットを読み込 み ・ Hadoopで広く使用されているストレージマネージャとやり取 り - Hadoop処理が行われるのと同じノードで実行● 高いパフォーマンス: ・ Javaの代わりにC++で開発 ・ ランタイムコードの生成 ・ MapReduce上に構築されていない全く新しい実行エンジン
  3. 3. デモ: Hive vs Impala ● Cloudera Demo VM ● TPC-DS データセット ~500MB ● クエリの内容: 複数データの結合(joins)、 集計(aggregate)、並べ替え(order by) ● フォーマット: 非圧縮テキスト ● VMダウンロードのリンク: https://ccp.cloudera.com/ display/SUPPORT/Clouderas+Impala+Demo+VM
  4. 4. Impalaのユーザービュー: SQL● SQL サポート: ・ SQLのHiveバージョンにならって開発 ・ 「Select」「Project」「Join(結合)」「Union」「Subqueries (サブクエリ)」「Aggregate(集計)」「Insert(挿入)」に限定 ・ 制限付きで「Order by(並べ替え)」 ・ GA版: DDL サポート (CREATE, ALTER)● 機能制限: ・ カスタムUDF、ファイルフォーマット、SerDeに対応しない ・ ハッシュ結合のみ; テーブル結合はメモリにフィットする必要 がある: ・ ベータ版: ブロードキャストされたハッシュ結合だけ ・ GA版:全(実行)ノードのメモリを集計 ・ ベータ版: join order = FROM clause order ・ GA版:基礎的なコストベースのオプティマイザー
  5. 5. Impalaアーキテクチャ: クエリ実行ODBC/BeeswaxのThrift API経由でSQLリクエストを受信 SQL App Hive メタスト HDFS NN Statestore ODBC ア SQLリクエス ト Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  6. 6. Impalaアーキテクチャ● 例: Join(結合)とAggregation(集計)のクエリ SELECT state, SUM(revenue) FROM HdfsTbl h JOIN HbaseTbl b ON (...) GROUP BY 1 ORDER BY 2 desc LIMIT 10 TopN Agg TopN Agg Hash Agg Join Hash Join Hdfs Hbase Exch Exch Scan ScanHdfs Hbase at coordinator at DataNodes at region serversScan Scan
  7. 7. Impalaアーキテクチャ: クエリの実行プランナはプランフラグメントの集合にリクエストを投げ、コーディ ネーターはリモートのImpalaデーモン上で動作を開始 SQL App Hive メタスト HDFS NN Statestore ODBC ア Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  8. 8. Impalaアーキテクチャ: クエリ実行Impalaデーモン間に中間結果がストリームで渡され、クエリ結果はク ライアントへ返される SQL App Hive メタスト HDFS NN Statestore ODBC ア クエリ結 果 Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  9. 9. Impalaがサポートしている機能● サポートするファイルフォーマット: ・ テキストファイル (lzoを含む) ・ snappy/gzip圧縮されたシーケンスファイル ・ GA版: Avroデータファイル ・ GA:版 Trevni (カラムフォーマット; 詳細は後述)● HBaseの機能: ・ 行キーの列にある述語はstart/stop行にマップされる ・ SingleColumnValueFilter マップされる ・ 全てのデータはテキストとして格納される
  10. 10. Impalaアーキテクチャ● メタデータの処理: ・ Hiveのメタストアを利用 ・ メタデータのキャッシュ: クエリ実行中は、メタストアを同期 するAPIは 呼び出さない ・ ベータ版: Impalaデーモンは、起動時にメタストアのメタデー タを 読み込む ・ GA版: statestoreを通じてメタデータを配布
  11. 11. Impalaアーキテクチャ● 実行エンジン ・ C++で開発 ・ “big loops”のためのランタイムコード生成 ・ 例:ハッシュテーブルへの行の挿入バッチ ・ LLVMによるコード生成 ・ すべての式をインライン化; ループ内でのファンクションコール はしない ・ テキストのパースやcrc 32の計算のために、内部/特別なCPU 命令を使用
  12. 12. ImpalaのStatestore 中央にあるシステムステートリポジトリ ・ ネームサービス(membership) ・ GA版: メタデータ ・ GA版:ほかの関連スケジュールまたは診断ステート● ソフトステート ・ 起動時に全Impalaデーモンを登録 ・ 接続が切れた後、Impalaデーモンを再登録 ・ StatestoreがなくてもImpalaサービスは動作を継続(但し状態は 低下し 続ける) ・ 定期的にステートをImpalaにプッシュ ・ ハーオビートの失敗が続く場合、クラスタビューからImpala デーモン が排除されたとみなす● サービス/サブスクリプションの登録にThrift APIを利用
  13. 13. ImpalaとDremelの比較● Dremel : ・ 入れ子構造を持つデータのカラムストレージ ・ 最上部に分散スケーラブルアグリゲーション● Hadoopのカラムストレージ: Trevni ・ Doug Cuttingにより開発された新しいカラムフォーマット ・ 全データを適切にネイティブ/バイナリ型で格納 ・ Dremelの ColumnIOに類似した入れ子構造でも格納可能● 分散アグリゲーション: Impala● Impala+Trevni: Dremelの公開バージョンのスーパーセット (Joinはサポートしていない)
  14. 14. ImpalaとHiveの比較● Hive: MapReduce ・ 高レイテンシ、低スループットクエリ ・ MapReduceのオンディスクチェックポイントに基づく フォールトトレランスモデル; 全ての中間結果を具現化 ・ Javaランタイムは遅延結合機能を簡単に: ファイルフォーマッ トとUDF ・ 大規模な階層が実行時の高いオーバーヘッドに● Impala: ・ プロセス間のダイレクトなデータ交換を実現 ・ フォールトトレランスはない ・ 低実行時オーバーヘッドのために設計された実行エンジン
  15. 15. ImpalaとHiveの比較● HiveよりImpalaのパフォーマンスが優れている点: 確かな数値はないが、 ・ Impalaは完全にディスクのスループットを取得 (~100MB/sec/disk); I/Oバウンドのワークロードは3〜4倍速い ことが多い ・ Hive内で複数のmap-reduceフェーズを必要とするクエリは 処理スピードの向上を実感 ・ メモリ内のデータに対して実行するクエリに関しては、 よりスピードアップを実感(100倍ほど早い場合も見られ る)
  16. 16. Impalaを試してみよう!● 2012年10月24日移行ベータ版を入手可能● 2013年Q1中のGA版を目指す● や impala-user@cloudera.org● : alan@cloudera.com
  17. 17. ご清聴ありがとうございました。17 CONFIDENTIAL - RESTRICTED

×