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