Contenu connexe Similaire à Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w (20) Plus de Cloudera Japan (20) Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w2. • 小林 大輔 (@daisukebe_)
• Cloudera株式会社
• カスタマーオペレーションズエンジニアとして
テクニカルサポート業務を担当
• email: daisuke@cloudera.com
3. Agenda
• Impala
• MapReduce, Hive, そしてImpalaへ
• Impalaのアーキテクチャ
• ImpalaとHiveの比較(デモあり)
4. Agenda
• Impala
• MapReduce, Hive, そしてImpalaへ
• Impalaのアーキテクチャ
• ImpalaとHiveの比較(デモあり)
5. Impalaとは
• Clouderaが開発した、低レイテンシ・分析特化型クエリ
実行基盤
• Apacheライセンス(オープンソース)
• Google Dremel, Google F1などにインスパイアされて開発
された
• 開発チームのMarcel Kornackerは、Google F1の元開発エンジニア
• データサイエンティストが使うことを想定して
いる
• あれこれと試行錯誤するときに、すぐに結果がほしいケース
7. Agenda
• Impala
• MapReduce, Hive, そしてImpalaへ
• Impalaのアーキテクチャ
• ImpalaとHiveの比較(デモあり)
9. MapReduce (1)
• 分散処理が簡単になったとはいえ、それでも処理の実装
はかなり大変
• Java で書かなければいけない
• 現実には複数のMapReduceを組み合わせて一つの処理を
実現するため、設計が難しい
MapReduceを基盤としたスクリプト言語・
上位アプリケーション開発のモチーベーション
となった
10. MapReduce
Hive Oozie
Pig Mahout
MapReduce
12. Hiveのアーキテクチャ
HiveQL とインタフェース
メタデータとスケジューラ
SQL App Hive
Metastore YARN MRv1 HDFS NN
Compiler
Query Exec Engine
MapReduce Slave MapReduce Slave MapReduce Slave
(Container or TT) (Container or TT) (Container or TT)
HDFS DN HBase HDFS DN HBase HDFS DN HBase
13. Hiveのアーキテクチャ
HiveQL とインタフェース
メタデータとスケジューラ
SQL App Hive
Metastore YARN MRv1 HDFS NN
Compiler
Query Exec Engine クエリを解析し、
メタストアにアクセスして必要な情報を集め、
MapReduce ジョブとして実行計画を作成する
MapReduce Slave MapReduce Slave MapReduce Slave
(Container or TT) (Container or TT) (Container or TT)
HDFS DN HBase HDFS DN HBase HDFS DN HBase
14. Hiveのアーキテクチャ
HiveQL とインタフェース
メタデータとスケジューラ
通常のMapReduceフレームワークを
SQL App Hive
用いてジョブを実行していく Metastore YARN MRv1 HDFS NN
Compiler
Query Exec Engine
MapReduce Slave MapReduce Slave MapReduce Slave
(Container or TT) (Container or TT) (Container or TT)
HDFS DN HBase HDFS DN HBase HDFS DN HBase
15. MapReduce (2)
• 高レイテンシ
• 小さいジョブを実行しても数十秒かかる
• 数十分単位で処理時間がかかることもよくある
• すぐに結果がほしいユーザーのニーズに合わない
MapReduceに依存しない、低レイテンシ処理の
ための基盤を開発するモチベーションとなった
16. Agenda
• Impala
• MapReduce, Hive, そしてImpalaへ
• Impalaのアーキテクチャ
• ImpalaとHiveの比較(デモあり)
17. Impalaのアーキテクチャ
HiveQL とインタフェース メタデータとスケジューラ
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
ローカルダイレクト読み込み
18. Impalaのアーキテクチャ
HiveQL とインタフェース メタデータとスケジューラ
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
ローカルダイレクト読み込み
19. Impalaのアーキテクチャ
HiveQL とインタフェース メタデータとスケジューラ
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
ローカルダイレクト読み込み
20. Impalaのアーキテクチャ: クエリ実行
ODBC/BeeswaxのThrift API経由でSQLリクエストを受信
SQL App Hive と同じクエリをそのまま投げる
Hive
メタスト (一部制限あり)Statestore
HDFS NN
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
21. Impalaのアーキテクチャ
HiveQL とインタフェース メタデータとスケジューラ
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
ローカルダイレクト読み込み
22. 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 Scan
Hdfs Hbase at coordinator at DataNodes at region servers
Scan Scan
24. 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
25. 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
28. Impalaのアーキテクチャ
Statestore
• 中央のステートリポジトリ
• ネームサービス(メンバーシップ)
• GA: メタデータ
• GA:ほかの関連スケジュールまたは診断ステート
• ソフトステート
• StatestoreがなくてもImpalaサービスは古い情報を使用しながら
動作を継続
• 定期的にImpalaデーモンをプッシュ
• ポーリングの失敗が続く場合、クラスタビューからImpalaデー
モンが排除されたとみなす
● サービス/サブスクリプション登録にThrift APIを利用
注:GAで搭載予定の機能は、現時点(v.0.4)では未サポートです
29. ユーザー視点でのImpala: SQL
• SQL サポート:
• SQLのHiveバージョンにならって開発
• 現時点では一部のDMLのサポートのみ(SELECT, INSERT)
• GA: DDLのサポート (CREATE, ALTER)
ベータ版ではHiveを使用
• 機能制限:
• カスタムUDF、ファイルフォーマット、SerDes不可
• ハッシュJOINのみ; テーブルJOINはメモリ内に収める必要がある:
• ベータ版: ブロードキャストされたハッシュJOINだけ
• GA:全(実行)ノードのメモリを集計
• ベータ版: JOINの順番 = FROM節に記述した順番
• GA:基本的なコストベースのオプティマイザ
30. Agenda
• Impala
• Hadoop, Hive, そしてImpalaへ
• Impalaのアーキテクチャ
• ImpalaとHiveの比較(デモあり)
31. デモ: Hive vs Impala
• Cloudera Demo VM
• 新ベンチマークTPC-DS データセット~500MB
• クエリの内容: 複数データの結合(joins)
集計(aggregate)、並べ替え(order by)
• フォーマット: 非圧縮テキスト
• VMダウンロードのリンク:
https://ccp.cloudera.com/display/SUPPORT/Cloudera%27s
+Impala+Demo+VM