cloudera impala seminar jan. 8 2013

17
1 Alan Choi | Cloudera, Inc. January 8, 2013 CONFIDENTIAL - RESTRICTED mpala: A Modern SQL Engine for Hado

Upload: cloudera-japan

Post on 14-Dec-2014

2.314 views

Category:

Technology


5 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Cloudera Impala Seminar Jan. 8 2013

1

Alan Choi | Cloudera, Inc.

January 8, 2013

CONFIDENTIAL - RESTRICTED

Impala: A Modern SQL Engine for Hadoop

Page 2: Cloudera Impala Seminar Jan. 8 2013

Impala 概要 : 目的

●  汎用的な SQL クエリエンジン :・ 分析 / トランザクションの両方のために動作する必要がある- 百万分の一秒から数時間もかかるようなクエリをサポート

●   Hadoop 内で直接実行 :・ Hadoop で広く使用されているファイルフォーマットを読み込み・ Hadoop で広く使用されているストレージマネージャとやり取り - Hadoop 処理が行われるのと同じノードで実行

●  高いパフォーマンス :・ Java の代わりに C++ で開発・ ランタイムコードの生成・ MapReduce 上に構築されていない全く新しい実行エンジン

Page 3: Cloudera Impala Seminar Jan. 8 2013

デモ : 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

Page 4: Cloudera Impala Seminar Jan. 8 2013

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 版 : 基礎的なコストベースのオプティマイザー

Page 5: Cloudera Impala Seminar Jan. 8 2013

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 リクエスト

Page 6: Cloudera Impala Seminar Jan. 8 2013

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

Page 7: Cloudera Impala Seminar Jan. 8 2013

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

Page 8: Cloudera Impala Seminar Jan. 8 2013

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

クエリ結果

Page 9: Cloudera Impala Seminar Jan. 8 2013

Impala がサポートしている機能

●  サポートするファイルフォーマット :・ テキストファイル (lzo を含む )・ snappy/gzip 圧縮されたシーケンスファイル・ GA 版 : Avro データファイル・ GA: 版 Trevni ( カラムフォーマット ; 詳細は後述 )

●   HBase の機能 :・ 行キーの列にある述語は start/stop 行にマップされる・ ほかの列の述語は SingleColumnValueFilter にマップされるグ・ 全てのデータはテキストとして格納される

Page 10: Cloudera Impala Seminar Jan. 8 2013

Impala アーキテクチャ

● メタデータの処理 :

・  Hive のメタストアを利用

・ メタデータのキャッシュ : クエリ実行中は、メタストアを同期する API は 呼び出さない

・ ベータ版 : Impala デーモンは、起動時にメタストアのメタデータを 読み込む

・ GA 版 : statestore を通じてメタデータを配布

Page 11: Cloudera Impala Seminar Jan. 8 2013

Impala アーキテクチャ● 実行エンジン

・ C++ で開発

・ “ big loops” のためのランタイムコード生成

・ 例 : ハッシュテーブルへの行の挿入バッチ

・  LLVM によるコード生成

・ すべての式をインライン化 ; ループ内でのファンクションコール

はしない

・ テキストのパースや crc 32 の計算のために、内部/特別なCPU 命令を使用

Page 12: Cloudera Impala Seminar Jan. 8 2013

Impala の Statestore

● 中央にあるシステムステートリポジトリ・ ネームサービス (membership)・ GA 版 : メタデータ・ GA 版 : ほかの関連スケジュールまたは診断ステート

● ソフトステート・ 起動時に全 Impala デーモンを登録・ 接続が切れた後、 Impala デーモンを再登録・ Statestore がなくても Impala サービスは動作を継続(但し状態は低下し 続ける)・ 定期的にステートを Impala にプッシュ・ ハーオビートの失敗が続く場合、クラスタビューからImpala デーモン  が排除されたとみなす

● サービス / サブスクリプションの登録に Thrift API を利用

Page 13: Cloudera Impala Seminar Jan. 8 2013

Impala と Dremel の比較● Dremel とは :

・ 入れ子構造を持つデータのカラムストレージ・ 最上部に分散スケーラブルアグリゲーション

● Hadoop のカラムストレージ : Trevni・ Doug Cutting により開発された新しいカラムフォーマット・ 全データを適切にネイティブ / バイナリ型で格納・ Dremel の ColumnIO に類似した入れ子構造でも格納可能

● 分散アグリゲーション : Impala● Impala + Trevni: Dremel の公開バージョンのスーパーセット (Join はサポートしていない )

Page 14: Cloudera Impala Seminar Jan. 8 2013

Impala と Hive の比較● Hive: MapReduce の実行エンジン

・ 高レイテンシ、低スループットクエリ・ MapReduce のオンディスクチェックポイントに基づく

フォールトトレランスモデル ; 全ての中間結果を具現化・ Java ランタイムは遅延結合機能を簡単に : ファイルフォーマットと UDF・ 大規模な階層が実行時の高いオーバーヘッドに

● Impala:・ プロセス間のダイレクトなデータ交換を実現・ フォールトトレランスはない・ 低実行時オーバーヘッドのために設計された実行エンジン

Page 15: Cloudera Impala Seminar Jan. 8 2013

Impala と Hive の比較● Hive より Impala のパフォーマンスが優れている点 :

確かな数値はないが、・ Impala は完全にディスクのスループットを取得 (~100MB/sec/disk); I/O バウンドのワークロードは3〜 4倍速いことが多い・ Hive 内で複数の map-reduce フェーズを必要とするクエリは  処理スピードの向上を実感・ メモリ内のデータに対して実行するクエリに関しては、

よりスピードアップを実感( 100倍ほど早い場合も見られる)

Page 16: Cloudera Impala Seminar Jan. 8 2013

Impala を試してみよう !

● 2012年 10月 24日移行ベータ版を入手可能

● 2013年 Q1 中の GA 版を目指す

● 質問やコメントは [email protected] まで

● メールアドレス : [email protected]

Page 17: Cloudera Impala Seminar Jan. 8 2013

17 CONFIDENTIAL - RESTRICTED

ご清聴ありがとうございました。