More Related Content
Similar to 基礎から学ぶ超並列SQLエンジンImpala #cwt2015 (20)
More from Cloudera Japan (20)
基礎から学ぶ超並列SQLエンジンImpala #cwt2015
- 2. 2© 2015 Cloudera, Inc. All rights reserved.
⾃自⼰己紹介
• ⽮矢野 智聡(やの ともあき)
• Customer Operations Engineer(テクニカルサポート)
• お客様がクラスタを運⽤用する上での懸念念や問題の解消を⽀支援
- 3. 3© 2015 Cloudera, Inc. All rights reserved.
アジェンダ
• Impala概要
• 動作概要
• 特徴的な機能と応⽤用
• 2.0 以降降の新機能
• Roadmap
- 5. 5
©
Cloudera,
Inc.
All
rights
reserved.
Cloudera Impalaとは
• Hadoopクラスタのためのオープンソースの超並列SQLクエリエンジン
h>p://impala.io/
• アドホッククエリに焦点を当てたプロダクト
- 6. 6
©
Cloudera,
Inc.
All
rights
reserved.
Impalaの特徴
• HDFS
や HBase
上のデータに対し、仮想的なビューとしてテーブルを作成し、ク
エリを発行できる
• メタデータは Hive
メタストアを共有
• ODBC
/
JDBC
で接続可能
• Kerberos
/
LDAP
で認証可能
• CDHに含まれており、無料で使用できる(サポートは有償)
• Cloudera
/
Oracle
/
MapR
/
Amazon
がサポートを提供
- 7. 7
©
Cloudera,
Inc.
All
rights
reserved.
Impala開発の背景
• バッチのために開発されたHiveに対してビッグデータ解析の期待とともに分析
ツールの接続が向けられるようになった
• アドホッククエリに期待される低レイテンシ、高スループットの処理をHadoop上
で実行することに対する要望
• ImpalaはHiveの数倍-‐数十倍の速度で処理を遂行
- 8. 8
©
Cloudera,
Inc.
All
rights
reserved.
Impalaは何でないか
• 汎用の処理エンジンではない
-‐>
SQL処理の高速化に特化するため、専用に書き起されている
• 分散環境でバッチ処理を遂行するための耐障害性のあるエンジンではない
-‐>
問題発生時に内部リトライを行うのではなく速やかにエラーを返す
• Hiveの実施できる処理を全て実行できるわけではない
-‐>
大部分の処理を置き換えられ、また随時実装も進んでいるが、全てではな
いため注意が必要(例:
nested
type)
- 9. 9
©
Cloudera,
Inc.
All
rights
reserved.
SQL on Hadoopのユースケース
• Impala
• JDBC/ODBCで接続してインタラクティブな処理を行うツールとの連携
• BI/分析
(例:
Tableau,
Zoomdata,
MicroStrategy,
QlikView,
SAS等)
• アドホックなSQLを直接実行してのデータ探索や分析
• Hive(MapReduce/Spark)
• ETLなど耐障害性を重視するバッチ処理
• SparkSQL
• Spark処理内でのクエリ
• SQLでの処理が主体とならない比較的単純なクエリ
※
CDH5.4系ではHive
on
Spark/SparkSQL
は未サポート
- 11. 11
©
Cloudera,
Inc.
All
rights
reserved.
Impalaの構成要素
• コンポーネント
• ワーカーノード
• impalad
• マスタノード
• catalogd
• Statestore
• クライアント
• impala-‐shell(command
line
Client)
• ODBC
/
JDBC
ODBC
/
JDBC
SQL
App
クライアント
マスタノード
Hive
Metastore
HDFS
NN
State
Store
catalogd
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
impalad
ワーカーノード
- 12. 12
©
Cloudera,
Inc.
All
rights
reserved.
Impala Daemon (impalad)
• HDFSのDataNodeの稼動している全てのノードで動作する
• クエリを受けつけ、他のimpaladと連携して実行する中心的なデーモン
• どの impalad
でもユーザからのクエリを受け付けることが可能
• クエリを受け付ける impalad
は、通常「コーディネータノード」と呼ばれる
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
impalad
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
impalad
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
impalad
- 13. 13
©
Cloudera,
Inc.
All
rights
reserved.
Catalog Service (catalogd)
• 各クラスタに1つ起動する
• impaladが処理実行時にHDFSやHiveのマスタデーモンに都度アクセスしなくて
済むようにキャッシュ情報を管理する
• impaladで実行されたDDLを情報をHiveMetastoreに反映する役割も持つ
Hive
Metastore
HDFS
NN
State
Store
catalogd
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
impalad
DDL
Block情報等
Hiveメタデータ
メタデータ
- 14. 14
©
Cloudera,
Inc.
All
rights
reserved.
StateStore
• クラスタ毎に1つ起動する
• Impaladの起動状況の管理やメタデータの伝播を担う
catalogd
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
impalad
State
Store
プロセスステータス/メタデータ
- 15. 15
©
Cloudera,
Inc.
All
rights
reserved.
Impala のクエリ実⾏行行時の流流れ
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
ODBC
/
JDBC
SQL
App
クライアント・インタフェース
HDFS
DataNode
HDFS
DataNode
HDFS
DataNode
- 16. 16
©
Cloudera,
Inc.
All
rights
reserved.
Impala のクエリ実⾏行行時の流流れ
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
ODBC
/
JDBC
SQL
App
SQL
リクエスト
プランナーは実行計画を作成し
分散可能な処理の集合に変換する
クライアント・インタフェース
HDFS
DataNode
HDFS
DataNode
HDFS
DataNode
- 17. 17
©
Cloudera,
Inc.
All
rights
reserved.
Impala のクエリ実⾏行行時の流流れ
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
ODBC
/
JDBC
SQL
App
コーディネータは各impaladに分割した処理を振り
分ける
クライアント・インタフェース
HDFS
DataNode
HDFS
DataNode
HDFS
DataNode
- 18. 18
©
Cloudera,
Inc.
All
rights
reserved.
Impala のクエリ実⾏行行時の流流れ
Query
Exec
Engine
Query
Coordinator
Query
Planner
Query
Exec
Engine
Query
Coordinator
Query
Planner
HDFS
DataNode
Query
Exec
Engine
Query
Coordinator
Query
Planner
ODBC
/
JDBC
SQL
App
HDFS
ショートサーキットリードを使って
ローカルダイレクトスキャン、その後計算処理を実行
(集約やハッシュJOINなど)
クライアント・インタフェース
HDFS
DataNode
HDFS
DataNode
- 19. 19
©
Cloudera,
Inc.
All
rights
reserved.
Impala のクエリ実⾏行行時の流流れ
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
ODBC
/
JDBC
SQL
App
もしクエリが複雑なら、impaladは計算結果を互いに交換し、他の計算
処理を実行
中間結果はストリームで転送される
クライアント・インタフェース
HDFS
DataNode
HDFS
DataNode
HDFS
DataNode
- 20. 20
©
Cloudera,
Inc.
All
rights
reserved.
Impala のクエリ実⾏行行時の流流れ
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
HDFS
DN
Query
Exec
Engine
Query
Coordinator
Query
Planner
HBase
ODBC
/
JDBC
SQL
App
HiveQLとインタフェース
コーディネータは最後の計算を実行し、クライア
ントに結果を返す
HDFS
DataNode
HDFS
DataNode
HDFS
DataNode
- 21. 21
©
Cloudera,
Inc.
All
rights
reserved.
クエリ実⾏行行時の処理理のポイント
• 他のノードと処理の結果を交換する際にDiskに書き込まない
• 高速性と耐障害性のトレードオフ
• MapReduceであればDiskに記録しておくことでノード停止などの障害時、内部
的な再実行時使用する
• Impalaはクエリ実行中に参加ノードが停止するとクエリが失敗する
- 22. 22
©
Cloudera,
Inc.
All
rights
reserved.
特徴的な機能と応⽤用
エンタープライズ用途を意識した機能と周辺技術
- 23. 23
©
Cloudera,
Inc.
All
rights
reserved.
UDF (ユーザ定義関数)
• UDF
と UDAF(集約関数)をサポート
• Impala専用の C++
UDF
• Java
で書かれた Hive
UDF
もサポート
•
Python
UDF
も開発中
• h>ps://github.com/cloudera/impyla
- 24. 24
©
Cloudera,
Inc.
All
rights
reserved.
アドミッションコントロール
• 高速・軽量なリソース管理機構
• 並列ワークロードに対するリソースの過剰利用を避ける
• 設定した限界値を超えたらクエリはキューイングされる
- 25. 25
©
Cloudera,
Inc.
All
rights
reserved.
アドミッションコントロールの例例
並列実行可能な
クエリ数
クエリキューの
最大長
100
10
10
1
最大メモリ
1000
GB
100
GB
Group
A
Group
B
- 26. 26
©
Cloudera,
Inc.
All
rights
reserved.
Impalaにおけるセキュリティ
• 認証(Authenecaeon)
• Kerberos/LDAPによる認証
• 許可されたユーザのみが接続できるように制限する
• 認可(Authorizaeon)
• Sentryによる認可(HDFSのパーミッションとは別)
• ユーザがアクセスできるデータの制御
• 監査(Audit)
• Cloudera
Navigator
と連携して監査情報を管理
- 27. 27
©
Cloudera,
Inc.
All
rights
reserved.
ストレージ
• 圧縮/非圧縮で必要になる容量およびI/O
量が変わる
I/Oは展開処理より時間がかかることが多い
• 圧縮フォーマットによって展開にかかる時間が変わる
bzip2は高圧縮だが、展開に時間がかかる
• ファイルの形式でも圧縮効率が異なる
行指向:
通常の形式
列指向:
同形式のデータが続くため圧縮効率が良い
- 28. 28
©
Cloudera,
Inc.
All
rights
reserved.
Parquet
• Impalaとの親和性の高い列指向フォーマット
• ヘッダ情報を元にクエリに必要な列のみを抽出してI/Oを行うことが可能
• Impalaではデフォルト圧縮形式としてで圧縮展開が高速なsnappyフォーマッ
トが使用される
• 基本的に行指向のデータを元に列指向に組替えるため作成に時間がかかる
• データの更新はファイルの再作成となる
• 更新が少なく読み込みが多い処理に向く
- 29. 29
©
Cloudera,
Inc.
All
rights
reserved.
HBaseとImpala
Impala
HBase
External
systems
put
SELECT
*
FROM
hbase_tbl
…
INSERT
/
INSERT
…
VALUES
get,
scan
• put/getの性能の非常に高いHadoop上のNoSQL
• ImpalaからHBaseのテーブルに対して表を作成し、クエリの実行が可能
• データをシーケンシャルに読み込むようなスキャン性能はHDFSのブロックを
直接読むのに対して劣る
• HBase自体は行指向の構造
• 更新が多く反映が必要だが、クエリのパフォーマンスに余裕があるシステム
に向く
- 30. 30
©
Cloudera,
Inc.
All
rights
reserved.
Kudu
• 列指向ストレージサービス
• ParquetがHDFS上に作成するファイルのフォーマットなのに対してKuduはスト
レージサービス
• 追加、更新、削除をリアルタイムに実施可能
• 分析とデータの更新を両方行うシステム向け
※CDH
5.4では未サポート
- 32. 32
©
Cloudera,
Inc.
All
rights
reserved.
Impala 2.0(CDH5.2)
• 安定性向上
• 結合処理にDisk使用可能(メモリに収まらない場合のDisk
spill)
• クエリ言語の拡張
• SQL
2003互換のWindow関数の導入(RANK,
LAG等)
• Where句内でのサブクエリ
• 新しいデータ型(VARCHAR,
CHAR)
• 関数の追加(VAR_SAMP,
VAR_POP等)
- 33. 33
©
Cloudera,
Inc.
All
rights
reserved.
Impala 2.1(CDH5.3)
• 安定性向上
• StateStoreのハートビートとメタ情報更新処理の分離
• メタデータ管理の利便性向上
• 統計情報の増分取得
- 34. 34
©
Cloudera,
Inc.
All
rights
reserved.
Impala 2.2(CDH5.4)
• ストレージサポートの拡充
• Amazon
S3へのダイレクトアクセス(unsupported)
• セキュリティ
• Cloudera
Navigatorとの連携によるカラムレベルの変遷の追跡
- 36. 36
©
Cloudera,
Inc.
All
rights
reserved.
2015年年中の実装が予定されている機能
• クエリ言語の拡張
• Nested
type(列への配列などの格納)
• ストレージサポートの拡充
• EMC
Isilon
サポート
• 安定性の拡張
• 大規模かつ多ユーザ環境でのスケーラビリティの拡充
- 37. 37
©
Cloudera,
Inc.
All
rights
reserved.
2015/2016初旬の実装が予定されている機能
• クエリ言語の拡張
• 動的パーティションプルーニング
• リソース管理
• LlamaによるYARNとのリソース管理の効率化
- 38. 38
©
Cloudera,
Inc.
All
rights
reserved.
2016年年の実装を⽬目標にしている機能
• パフォーマンス向上
• 20倍以上のパフォーマンス向上
(mulecore
join/runemeコード生成/HW処理効率化)
• インメモリカラムナフォーマット(nested
type/UDFのパフォーマンス向上)
• メタデータ管理の利便性向上
• 表のメタデータ/統計情報増分更新の自動化
• クエリ言語の拡張
• 一時表(途中経過のDisk
Spill)
• SQL表現の拡張
- 40. 40
©
Cloudera,
Inc.
All
rights
reserved.
Cloudera Impala
• アドホッククエリに特化したHadoop環境のためのSQLエンジン
• 様々なBI/分析ツールと連携可能
• エンタープライズ用途での使用を意図した機能や連携技術
• より安定、高速、かつ利便性の高いシステムを目指し開発が活発に進行中
- 42. 42
©
Cloudera,
Inc.
All
rights
reserved.
Impalaを試す4つの⽅方法
• WebUI
Hue
のデモサイト
• 手元で実行できるQuickStartVM
• Cloud上でのトライアルクラスタ Cloudera
Live
• Cloudera
Managerを使ってインストール
- 43. 43
©
Cloudera,
Inc.
All
rights
reserved.
Hueのデモサイト
• Hue
HP
h>p://gethue.com/
• Hue
Demo
site
h>p://demo.gethue.com/
• Query
Editors
から
Hive/Impalaを選択して直接クエリ実行可能
- 44. 44
©
Cloudera,
Inc.
All
rights
reserved.
QuickStartVM
• Download
site
h>p://www.cloudera.com/content/www/en-‐us/downloads/quickstart_vms/5-‐4.html
• シングルノードのVMでCDHの機能を一通り試すことができる
• Cloudera
Manager(default
無効)を使う場合は8-‐10GBのメモリが必要
- 45. 45
©
Cloudera,
Inc.
All
rights
reserved.
Cloudera Live
• Web
site
h>p://www.cloudera.com/content/www/en-‐us/get-‐started/cloudera-‐live.html
• Cloud
(AWS)
上に展開されるチュートリアル環境(m4.xlarge
x
4)
• Tableau/Zoomdata(それぞれm4.xlarge
+1)と併せて60日間のトライアルを提供
• AWSのインスタンスは実費が必要
- 46. 46
©
Cloudera,
Inc.
All
rights
reserved.
Cloudera Managerを使ってインストール
• rootユーザでターミナルから下記を実行(TUIでのインストール)
• 使用規約を承諾、Readmeも把握済みの場合はバッチでのインストールも可
• 本番環境へのインストールではOSパッケージからのインストールが推奨
$
curl
-‐O
h>p://archive.cloudera.com/cm5/installer/latest/cloudera-‐manager-‐installer.bin
$
chmod
755
cloudera-‐manager-‐installer.bin
$
sudo
./cloudera-‐manager-‐installer.bin
$
sudo
./cloudera-‐manager-‐installer.bin
-‐-‐i-‐agree-‐to-‐all-‐licenses
-‐-‐noprompt
-‐-‐noreadme
- 47. 47
©
Cloudera,
Inc.
All
rights
reserved.
Cloudera Managerでクラスタ構築
2
3
インストールする
ロールを割り当てる
Cloudera
Manager
が指定したCDHコン
ポーネントをインストールする
自動でホストにロールを割り当てるの
で、必要があれば変更する
1
ノードを探す
クラスタに組み込むホストの
ホスト名を入力
- 49. 49
©
Cloudera,
Inc.
All
rights
reserved.
Impalaの技術情報
• Document
h>p://www.cloudera.com/content/www/en-‐us/documentaeon/enterprise/
latest/topics/impala.html
Impalaを試したあと本格的に検討するにあたっては一読を推奨(英語)
• Engineer
Blog
• h>p://blog.cloudera.com/
Cloudera
のエンジニアリングチームによる技術Blog.
Impala以外の情報も含め
て最新の技術情報が随時提供される(英語)
- 50. 50
©
Cloudera,
Inc.
All
rights
reserved.
コミュニティへようこそ
• CDH ユーザ メーリングリスト(⽇日本語)
cdh-‐‑‒user-‐‑‒jp@cloudera.org
Impalaの質問についてはこちら
• Cloudera コミュニティ(英語)
http://community.cloudera.com/
登録するとトレーニング10%ディスカウント!
- 51. 51
©
Cloudera,
Inc.
All
rights
reserved.
宣伝
• Hadoopはどのように動くのか
─並列・分散システム技術から読み解くHadoop処理系の設計と実装
h>p://gihyo.jp/admin/serial/01/how_hadoop_works
gihyo.jp
で連載されている上記の連載にImpalaのパフォーマンスに関わる動作
に焦点をあてた記事を執筆しています。2015年12月-‐2016年1月頃の掲載にな
りますのでどうぞお楽しみに。
- 52. 52
©
Cloudera,
Inc.
All
rights
reserved.
エンタープライズセールス
大規模システムに関わる営業ができ
る人歓迎
セールスエンジニア
技術の価値を伝えることに興味があ
る人歓迎
We are hiring!
career-‐jp@cloudera.com