SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Impala + Kuduを用いた
データウェアハウス構築の勘所(仮)
2018年11月06日 – CWT 2018
Takahiko Sato / Sales Engineer at Cloudera
2 © Cloudera, Inc. All rights reserved.
佐藤貴彦 (さとうたかひこ) / takahiko@cloudera.com
セールスエンジニア
• お客様がCloudera製品及び関連技術をを活用できるよう、一緒に議論するのがメインの仕事
これまでの経験
• Internet & Network(大学)
• RDBMS(1社目)
• NoSQL(2社目)
• Hadoopエコシステム(3社目) ←Now!
自己紹介
3 © Cloudera, Inc. All rights reserved.
• Apache Kuduは、HDFSやHBaseに続き、Hadoopエコシステムにおけるスト
レージ層として登場しました。
• 一方、同時実効性の高いワークロードをサポートするImpalaとの組み合わせが
注目されています。
• 本セッションでは、Impala + Kudu の組み合わせによるDWH構築の勘所や
チューニングポイントを徹底的に解説します。
今回お話する概要
© Cloudera, Inc. All rights reserved.
Clouderaが提供するデータウェアハウスとは?
5 © Cloudera, Inc. All rights reserved.
Cloudera Data Warehouse - オンプレ/クラウドで利用可能な分析基盤
SQL開発者
分析ワークベンチ
アナリスト
任意のBIツール
マイグレーション
とジョブ最適化
Workload XM
監査と
データガバナンス
Navigator
分析向けSQLエンジン
Impala
クエリエンジン
&
処理エンジン
オブジェクトストレージ
S3 | ADLS
ストレージ
Cloudera Data Warehouse
ETL向けSQLエンジン
Hive on Spark
ローカルストレージ
HDFS | Kudu
6 © Cloudera, Inc. All rights reserved.
処理エンジン各種製品との組み合わせ
クエリエンジン
(Impala)
ストレージ
(Kudu)
ストレージ
(S3)
ストレージ
(HDFS)
処理エンジン
(Impala)
処理エンジン
(Spark)
処理エンジン
ストレージ
エンジン
クエリエンジン
(Hive)
処理エンジン
(MapReduce)
ストレージ
(ADLS)
クエリエンジン
(SQL)
処理エンジン
ストレージエンジン
カタログ
クエリエンジン
モノリシックな
分析データベース
(一般的なリレーショナルDB含む)
エコシステムで構成された
分析データベース
カタログ
(HMS)
7 © Cloudera, Inc. All rights reserved.
Hadoopのためのスケーラブルな分散ファイルシステム
• 一般的なファイルシステムと同様どのようなデータもファイルとして保存可能
• 非構造化データ:生ログ(txt)、画像や動画などのバイナリ、etc...
• 構造化データ:csv, avro, parquet, etc...
• ファイルはブロックに分割されて各ノードに分散配置
• 大量データをフルスキャンをすることに特化している → ETL処理
• IO効率が良くなるよう、大きなファイルサイズを想定(数百MB〜GB)
• 高スループットを重要視している
• データのランダムな更新ができない
• ファイルの末尾に追加はできる
ストレージ:HDFSはあらゆるデータを扱える分散ファイルシステム
HDFS
1 2 3 4
複数ノードで1つのファイルシステム
8 © Cloudera, Inc. All rights reserved.
分析向けのスケーラブルなストレージエンジン
• 一般的なリレーショナルデータベースのように、表形式でデータを格納
• 構造化されたテーブルでデータを表現
• 列ごとに厳密にデータ型を定義
• 物理的にはカラムナー構造になっており、列単位の集計に強い
• テーブルの個々の行レベルのアクセス、特定列の大量スキャンのどちらも強い
• データのランダムな更新と、データの大量スキャンを同時に行える
• クラスターで秒間数百万のリード/ライト
• 1ノードあたり数GB/秒のリードスループット
ストレージ:Kuduは構造化データ向けの更新可能ストレージ
複数ノードで1つのデータベース
Kudu
9 © Cloudera, Inc. All rights reserved.
• Hive on Spark は SQLをSparkの処理に変換する
• Sparkによるプログラミングをすることなく、SQLを記述するだけでETL的な
処理が可能
クエリエンジン:Hive on Sparkを用いたSQLによるETL処理
クエリエンジン
(Impala)
ストレージ
(Kudu)
ストレージ
(S3)
ストレージ
(HDFS)
処理エンジン
(Impala)
処理エンジン
(Spark)
クエリエンジン
(Hive)
処理エンジン
(MapReduce)
ストレージ
(ADLS)
カタログ
(HMS)
10 © Cloudera, Inc. All rights reserved.
クエリエンジン:Impalaを用いた分析SQL
クエリエンジン
(Impala)
ストレージ
(Kudu)
ストレージ
(S3)
ストレージ
(HDFS)
処理エンジン
(Impala)
処理エンジン
(Spark)
クエリエンジン
(Hive)
処理エンジン
(MapReduce)
ストレージ
(ADLS)
カタログ
(HMS)
• Kudu自体はSQLエンジンを持たず、他の製品に頼っている
• 特にImpalaとの親和性が高い(更新からスキャンまでなんでもSQLででき
る)
11 © Cloudera, Inc. All rights reserved.
処理エンジン:SparkからKuduへのアクセス
クエリエンジン
(Impala)
ストレージ
(Kudu)
ストレージ
(S3)
ストレージ
(HDFS)
処理エンジン
(Impala)
処理エンジン
(Spark)
クエリエンジン
(Hive)
処理エンジン
(MapReduce)
ストレージ
(ADLS)
カタログ
(HMS)
• Sparkからであれば、SQL経由のク
エリと異なり、KuduのAPIを直接使
うことができる
• SparkSQLとしての実行も可能
© Cloudera, Inc. All rights reserved.
Cloudera Data Warehouse はどこへ向かっているのか?
13 © Cloudera, Inc. All rights reserved.
データウェアハウスと言われて想像するもの
SQL? DWH?
BI?
OLAP?RDBMS?
データウェアハウス
DataMart?
Analytic DB?
14 © Cloudera, Inc. All rights reserved.
データウェアハウス
• データウェアハウスとは、ビル・インモン(Bill Inmom)氏が提唱した概念
• 「基本データ / 業務系データ」から「派生データ / 意思決定(DSS)データ」へ
• 当時(90年代〜)は業務データベースからデータを抽出し、分析データベースへ
マーケティング
営業
ERP
SCM
業務系データ
ETL
データウェアハウス
ETL
データマート
ETL
ETL
更新
更新
15 © Cloudera, Inc. All rights reserved.
業務データベースから分析データベース
• 業務DBは企業内で生成された「内部データ」を「構造化データ」として保持
• しかし分析DBであるDWHでは、内部データだけでなく「外部データ」も組み
合わせて使うことがある
• 外部データは「非構造化データ」となる場合も多い
業務DB
分析DB
(DWH)
ETL更新
外部データ
内部データ
非構造化
データ
ETL
16 © Cloudera, Inc. All rights reserved.
データウェアハウスにおけるワークロード
• 業務DBは、OLTP(online transaction processing)系のワークロード
• 業務処理、更新系(挿入、更新、削除)、1行単位のスキャン
• 分析DBは、OLAP(online analytical processing)系のワークロード
• 分析処理、参照系、フルスキャン
業務DB
分析DB
(DWH)
ETL ETL
データマート
データの更新頻度
更新系 参照系
OLTP系のワークロード OLAP系のワークロード
17 © Cloudera, Inc. All rights reserved.
RDBのスケーラビリティはスケールアップから
• スケールアップするにも、OLTPはせいぜい1TBのRAMに収まるまで
• スケールアウトは、シェアードナッシングが基本で設計運用で対処
OLTPとOLAPの世界は分離
• 異なる2種類のワークロードをどのように対処するか
進歩しつつはあるも、依然として大規模データの分析に困難
リレーショナルDBによるデータウェアハウスと
insert/update/delete
OLTPの世界 OLAPの世界(DWH) BIツール
select
ETL
18 © Cloudera, Inc. All rights reserved.
スケーラビリティの高いHadoopエコシステム
• スケールアウトでペタバイト(PB)級のデータも処理可能
HDFSは非構造化データもそのまま扱える
HDFSは大規模スキャンが得意なので、OLAP系のアクセスは得意
• Impala/Hive経由でSQLによるスキャンもできる
• しかしHDFSは更新(ランダムライト)は得意ではないため、OLTP系はHBase併用
しかしHBaseからの結局データ変換が必要ですぐさま分析することができない
Hadoopエコシステムを用いたデータウェアハウス
put / delete OLTPの世界 OLAPの世界 BIツールselect
HBase ImpalaHadoopの世界
data ingestion
HDFS
ETL
19 © Cloudera, Inc. All rights reserved.
HTAP(Hybrid Transactional/Analytic Processing)系のワークロード
• OLTP系ワークロードと、OLAP系ワークロードを1つのDBでこなせる
• OLTPのようにデータを受け続け、OLAPの様に分析をし続ける、そんなハイブ
リッド型のアーキテクチャに対応
• データウェアハウスやデータマートを更新する時間を待つ必要が無い
• もちろん必要に応じて個々のマートを作るといった処理も可能
Hadoopエコシステムを用いた次世代データウェアハウス
insert/update/delete
HTAPの世界(DWH) BIツール
select
Kudu
20 © Cloudera, Inc. All rights reserved.
データソース
データウェアハウスシステムとしての構成例
各種非構造化データ
(HDFS)
分析SQL
(Impala)
加工処理等
(Spark Streaming)
データ取得
(Flume)
ETL・バッチ
SQL
(Hive/Spark)
業務DB・分析DB
(Kudu)
IoTセンサー
データソース
データソース
サーバー
ログ
データ取得
(Flume)
BIツール
BIツール
BIツール
アプリ
ETLツール
MQTT
BrokerIoTセンサー
データ取得 アプリ
アプリ
BIツール
業務DB・分析DB
クエリ/処理エンジン
業務DB・分析DB
メッセージ
キュー
(Kafka)
加工処理等
(アプリ)
21 © Cloudera, Inc. All rights reserved.
データソース
データウェアハウスシステムとしての構成例
各種非構造化データ
(HDFS)
分析SQL
(Impala)
加工処理等
(Spark Streaming)
データ取得
(Flume)
ETL・バッチ
SQL
(Hive/Spark)
業務DB・分析DB
(Kudu)
IoTセンサー
データソース
データソース
サーバー
ログ
データ取得
(Flume)
BIツール
BIツール
BIツール
アプリ
ETLツール
MQTT
BrokerIoTセンサー
データ取得 アプリ
アプリ
BIツール
業務DB・分析DB
クエリ/処理エンジン
業務DB・分析DB
メッセージ
キュー
(Kafka)
加工処理等
(アプリ)
今日の対象はこの範囲
© Cloudera, Inc. All rights reserved.
Impala + Kuduを用いたデータウェアハウス構築の勘所
23 © Cloudera, Inc. All rights reserved.
勘所1
まずはマニュアルの最低要件を確認
24 © Cloudera, Inc. All rights reserved.
• Impala
• Kudu
マニュアルの最小要件はあくまでも「最小」要件
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_hardware_requirements.html
〜Note〜
ここで確認するのは、それぞ
れ最低でもこのぐらいのリ
ソースを必要としているんだ
という感覚。
〜Note〜
Impala はメモリを多めに要求。
Kuduは、マスターはリソース
をあまり必要としない。
25 © Cloudera, Inc. All rights reserved.
勘所2
まず設定変更すべきはメモリ上限
26 © Cloudera, Inc. All rights reserved.
• デフォルトのメモリ上限は小さめになっているので、必要な量まであげる
• Impalaの mem_limit の必要量は、SQLの種類(JOINが多いかなど)次第
• Kuduの memory_limit_hard_bytes は、特に更新(INSERT/UPDATE)が多い環
境では、多めに設定すること
メモリ設定をデフォルトから変更
〜Note〜
Kuduはメモリが足りず更新を受け付
けられない場合、クライアントに
バックプレッシャーを返す
27 © Cloudera, Inc. All rights reserved.
勘所3
机上のチューニングではなく
実際に実検証にて確認しよう
28 © Cloudera, Inc. All rights reserved.
実検証による基礎値の取得
〜Note〜
クラウド環境による簡易検証など、
基礎値を取得することによって、サ
イジングの精度をあげ、またその先
のチューニングを容易にする。
実検証をし各種メトリクスを取得し、設計やチューニングの基礎値とする
29 © Cloudera, Inc. All rights reserved.
勘所4
Kudu単体ではなくHDFSも使おう
30 © Cloudera, Inc. All rights reserved.
非構造化データを扱うため
• KuduはRDBと同様にテーブル定義を厳密に行う
• 外部データや非構造化データを扱うためにHDFSが役立つ
データのexport/importなどを行うため
• KuduテーブルとHDFS上のparquetテーブルは、Impalaから透過的に扱える
• 実際にはHDFS DN上のデータからKudu TS上のデータへコピー
• 初期ロード、バルクロードが高速
• SELECT INSERT や CTAS で行う(後ほど解説)
なぜHDFSもあったほうがよいのか?
分析DB
(DWH)
外部データ
非構造化
データ
HDFS
Kudu
Impala
31 © Cloudera, Inc. All rights reserved.
Kudu
• WAL用 - SSD x1
• Data用 - SSD/HDD x複数本
• SSDに最適化されているがHDDも可
• TabletServerごとに保存可能な合計データ
サイズは、Kudu 1.7 / CDH 5.15 では 8TB
までが目安
HDFS
• DataNode用 - HDD x複数本
• KuduとHDFSはアクセス特性が異なるため、
理想としてはディスクは分けた方がよいが、
用途次第ではではKuduとディスクの共有
もあり
Kudu及びHDFSの物理構成
KM ZK
マスターの物理構成例
〜Note〜
ディスク構成はあくまで一例、理想を言えばサービスや
ロールごとに独立させるべきだが、小規模の場合同居させ
ても問題ない(要相談)
OS
(RAID1)
NN JN
Kudu WAL
Kudu Data
HDFS NN
(RAID1)
JN ZK
TS DN
ワーカーの物理構成例
OS Kudu
WAL
Kudu Data
HDFS DN
(JBOD)
...
32 © Cloudera, Inc. All rights reserved.
勘所5
ディスクの本数は多めに
33 © Cloudera, Inc. All rights reserved.
ディスクの本数はIOの並列度を稼ぐ上で重要
• 並列度 = ディスク本数 x ノード数
何本つけるか?
• ディスクの本数は「並列度」と「ストレージ容量」の両方に影響
• Kuduは1ノードあたりの最大容量が 8TB でHDFSに比べると小さめ
例1) 500GB SSD x16本
例2) 1TB HDD x8本
ディスクの本数がDWHの性能を左右する
〜Note〜
あくまで例なので、OS分やWAL用は別途専用ディス
クを与えること。HDFSとはワークロード次第では共
用もあり。また8TBは推奨値にすぎないので、これを
超える場合もテストをした上で検討の余地あり
https://kudu.apache.org/docs/known_issues.html
34 © Cloudera, Inc. All rights reserved.
性能面
HDDかSSDか?
• 特にレイテンシ(応答速度)が重要なディスクにはSSDを推奨
• Kudu TS の WAL
• Kafka の ZooKeeper
• Kuduのデータ用ディスクについてもSSDに最適化されており、可能であればSSD推奨
• もちろんHDDでも動くが十分に検証する
JBODかRAIDか?
• 基本的にデータを格納する領域にはJBOD(Just Bunch Of Disks)がよい
• ↓可用性の観点では必要に応じてRAID10
可用性
単一ディスクかRAIDか?
• OS領域やWALなど、それぞれ専有ディスクを与えるべき部分の冗長性をどうするか?
• 単一ディスク障害がすぐさまノード障害となり、その影響度が高い場合RAID1またはRAID10
• ノード障害となっても、他のノードでカバーできるなら単一ディスクも可、そこはトレードオフ
性能と可用性からみたディスクの考慮
〜Note〜
ZooKeeperは一般に低レイテンシを要求
するが、用途次第ではHDDでも可
35 © Cloudera, Inc. All rights reserved.
• HDFSのDataNode用データディレクトリ、KuduのTabletServer用データディレクトリは、複数
本のディスクをJBODで構成する
• JBODとは、RAIDなどを設定せず各ディスクをそのままOSに認識させること
• HDFSやKuduといったストレージは、JBODで性能が出るような実装がされている
• 例えば4本のディスクがある場合
• 例1)それぞれをOS上で個別のブロックデバイス(/dev/sdb, /dev/sdc, /dev/sdd, /dev/sdf など) として認識で
きるようにし、それらをHDFSやKuduに使わせる
• 例2)ハードウェアRAIDが既に組み込まれておりかつJBODモードが設定上できない場合などは、4本それぞ
れを個別に「1ディスクだけのRAID0構成」として、OS上から4本個別に認識できるようにしておくことは
OK
• 例3)RAID 0, 5, 6 などで4本を1つにストライピングする構成は非推奨
ディスクは原則JBOD構成で
RAID0
RAID 0/5/60 0 0 0
例1) 通常のJBOD構成 例2) RAID0でのJBOD構成 例3) ストライピングNGOK OK
36 © Cloudera, Inc. All rights reserved.
勘所6
適切なデータ型を考えよう
37 © Cloudera, Inc. All rights reserved.
データモデル
• リレーショナルデータベースに似ている
• テーブル構造
• 各列は強いデータ型を持つ
• 主キーを持つ
カラムナー
• 物理構造として、列ごとにデータが分離し
ている
• 集計する際、必要な列のみをスキャン
• 例)平均気温を出す
KuduのスキーマはリレーショナルDBに似ている
humidity
83
81
81
83
80
sensor_i
d
1
2
2
3
3
time
1531975456
1531975457
1531975458
1531975459
1531975460
region
TOKYO
TOKYO
TOKYO
TOKYO
KYOTO
temp
32.35
33.12
33.12
32.36
37.00
38 © Cloudera, Inc. All rights reserved.
制約
• 主キー列は必須かつユニーク制約だが、他の列はNULLも可
能
データ型
• Boolean
• 8/16/32/64 bit signed integer
• timestamp (64-bit microseconds Unix epoch)
• float/double (IEEE-754)
• UTF-8 encoded string(64KBまで)
• decimal
• Binary (64KBまで)
データ型の重要性
• エンコーディングと圧縮による、IOと保存容量の効率化
列のデータ型
sensor_i
d
time region temp humidity
1 1531975456 TOKYO 32.35 83
2 1531975457 TOKYO 33.12 81
2 1531975458 TOKYO 33.12 81
3 1531975459 TOKYO 32.36 83
3 1531975460 KYOTO 37.00 80
INT TIMESTAMP STRING DOUBLE INT
39 © Cloudera, Inc. All rights reserved.
適切なデータ型を使う理由
• 保存するデータ容量の削減するため
• フィルター(述語)などを効率よく適用するため
• 基本はリレーショナルDBの考え方ととあまりかわらない
ありがちなNG例)
• 数字を文字列で表現:"1500-0001231-12414"
• 日付を文字列で表現:"2018-11-06"
適切なデータ型とは?
sensor_i
d
time region temp humidity
1 1531975456 TOKYO 32.35 83
2 1531975457 TOKYO 33.12 81
2 1531975458 TOKYO 33.12 81
3 1531975459 TOKYO 32.36 83
3 1531975460 KYOTO 37.00 80
INT TIMESTAMP STRING DOUBLE INT
〜Note〜
扱うデータ量がお多いため、少しで
も効率よく格納することで、全体の
データ削減につながる。
40 © Cloudera, Inc. All rights reserved.
勘所7
エンコーディングはまずは自動で十分
41 © Cloudera, Inc. All rights reserved.
エンコーディング(符号化)
• データのbit表現をどう表すかのこと
• 列にデータ型があるから適切なエンコーディングが可能
• エンコーディングによりデータサイズやIOの削減が可能
基本はデフォルトの設定で十分
列のエンコーディング humidity
83
81
81
83
80
sensor_i
d
1
2
2
3
3
time
1531975456
1531975457
1531975458
1531975459
1531975460
region
TOKYO
TOKYO
TOKYO
TOKYO
KYOTO
temp
32.35
33.12
33.12
32.36
37.00
この例のようにカーディナリティの低いSTRINGの列を、
文字列(UTF-8)のまま格納するのは効率が悪い。
辞書の索引の様に、置き換えることで、格納効率が格段に上がる
〜Note〜
データのカーディナリティやソートを考えた際に、run length や
prefix encoding が良いと判断されるときは、変更を行う価値あり
region
1
1
1
1
2
dictionary
1:TOKYO
2:KYOTO
3:OSAKA
42 © Cloudera, Inc. All rights reserved.
勘所8
列圧縮は必要に応じて明示的にLZ4設定
43 © Cloudera, Inc. All rights reserved.
• Kuduは列単位でデータの圧縮が可能
• LZ4、Snappy、zlib
• 圧縮は圧縮速度と圧縮サイズのバランスを考える
• 圧縮処理はCPUと時間を使うが、圧縮によってサイズが減ればIO量を
減らすことができる
• 一般的に圧縮/展開速度と圧縮サイズの面でLZ4が最もバランスが良く
• 圧縮率だけみるならzlibが最も高い
• 通常の列はデフォルトでは無圧縮になっている
• まずはLZ4による圧縮を試すのがよい
• Bitshuffleエンコーディングは例外で、内部で自動的にLZ4で圧縮が行わ
れるので、その上に追加で圧縮を掛ける必要はない
列圧縮
〜Note〜
つまり圧縮とは、IOのボト
ルネックをCPU側に寄せる
ものである
〜Note〜
主キー列の様にソートされ
てる列は圧縮効率がよい
humidity
83
81
81
83
80
sensor_i
d
1
2
2
3
3
time
1531975456
1531975457
1531975458
1531975459
1531975460
region
TOKYO
TOKYO
TOKYO
TOKYO
KYOTO
temp
32.35
33.12
33.12
32.36
37.00
44 © Cloudera, Inc. All rights reserved.
勘所9
マルチレベルパーティションを使いつつ
合計パーティション数を意識しよう
45 © Cloudera, Inc. All rights reserved.
• Kuduはパーティションを持ち、データを分割することができる
• レンジパーティション
• ハッシュパーティション
• マルチレベルパーティション
• レンジとハッシュの組合せ
• 複数のハッシュの組合せ
• Kuduのパーティションは、タブレットと対応する
Kuduにおけるタブレットとパーティション
Tablet
Partition
パーティション
に分割
46 © Cloudera, Inc. All rights reserved.
• レンジパーティションでは、完全に順序付けされたレンジパーティションキー
を使って、行を分散させる
• このパーティションキーは、主キーのサブセットである必要がある
• ハッシュパーティションを併用しない場合、各レンジパーティションは、完全
に1つのタブレットと対応する
• つまりレンジの個数だけ、タブレットが存在する
レンジパーティション
47 © Cloudera, Inc. All rights reserved.
• ハッシュ値によって、値を複数のバケットの1つに対応させる
• ハッシュパーティション単一であれば、各バケットはそれぞれ1つのタブレッ
トに一致する
• バケットの数はテーブル作成時に設定し、後から変更はできない
• 通常は主キーをハッシュ用の列として使うが、主キー列のサブセットを使うこ
ともできる
• テーブルに順序アクセスをする必要がない場合は効果的
• 特に書き込みにおいて、ホットスポットや、タブレットサイズの不均衡を緩和
することに役立つ
ハッシュパーティション
48 © Cloudera, Inc. All rights reserved.
• マルチレベルパーティションでは、0個以上のハッシュパーティションと、レ
ンジパーティションを組み合わせることが可能
• 制約として、複数レベルのハッシュパーティションが、同じ列をハッシュして
はならない
• マルチレベルパーティションでは、合計タブレット数は、各レベルのパーティ
ション数の積になる
マルチレベルパーティション
〜Note〜
多用すると、タブレット数が膨大になる
のでよく考えて設計をする
〜Note〜
パーティションキーは主キーに含まれて
いる必要がある
49 © Cloudera, Inc. All rights reserved.
CREATE TABLE時のパーティション設定例
ハッシュパーティションの例 コンポジットパーティションの例
range(20) x hash(4) → 60パーティション
hash(16) → 16パーティション
〜Note〜
さらにパーティションは3つのレプリカを持つ
ため、実際にはさらにこの3倍存在している。
〜Note〜
さらにパーティションは3つのレプリカを持つ
ため、実際にはさらにこの3倍存在している。
50 © Cloudera, Inc. All rights reserved.
• 現在のところパーティションに関する制約がスキーマ設計の制約につながる
• レンジパーティションのadd/dropのみ可能、それ以外はパーティションの変更は不可
• とくに後からノード追加が想定される場合、パーティションを多めに用意
• パーティション(タブレット)を各ノードに配分するため、十分なパーティ
ション数がないと、ノード追加してもノードあたりのパーティション数が減る
基本はマルチレベルパーティションを使う
ノード追加時に配分
〜Note〜
パーティション数を変えるには、
レンジパーティションの追加削除
しか現状はできない
51 © Cloudera, Inc. All rights reserved.
• タブレット数を意識
• タブレットはパーティションと対応、複数の種類のパーションを利用した場合、その積になる
• スキャンは1タブレットごとに1つのスキャナー
• 基本的には、スキャンの並列度を考えると1ノードあたりのタブレットは多いほ
うが良いが、CPUコア数を超過すべきではない
• 大規模テーブルのタブレット数の目安
• CPUのコア数から並列度を考慮
• 小規模テーブルのタブレット数の目安
• 1タブレットに少なくとも1GB程度のデータが入るように調整
マルチレベルパーティションの考え方
タブレット数 = ×
ハッシュバケット
1の数
... ×
ハッシュバケット
2の数
レンジの数
〜Note〜
フルスキャンの際、各ノードIO並列度が
いくつになるかを意識する
52 © Cloudera, Inc. All rights reserved.
勘所10
主キーの設計はパーティションとセット
53 © Cloudera, Inc. All rights reserved.
• 主キーの設計が最重要な1つ
• パーティションキーは主キーに含まれる必要があるため、
複合主キーを構成することが多い
• 例)時系列によるキー + パーティションキー
• Kuduは、スキャンのフィルター条件(WHERE
句)を判断し、不要なパーティションは読み取り
をスキップ
• ハッシュパーティションのプルーニング
• 全てのハッシュ列に等価(=)の述語を含める必要がある
• レンジパーティションのプルーニング
• レンジパーティション列に、等価(=)または範囲
(<,>,≦,≧,etc.)を含む必要がある
主キーの設計とパーティションのプルーニング
〜Note〜
パーティションを読まないということは、
並列度自体は下がってしまうことに注意
54 © Cloudera, Inc. All rights reserved.
• Kuduの主キーは、クラスターインデックスになっている
• 1つのタブレット内にある全ての行は、主キーのソート順に保持される
• スキャンの述語に、等価(=)、範囲(<,>,≦,≧,etc.)などがある場合、合致しないものはIOを
スキップする
• 主キーによるプルーニングは、主キーのプレフィックス(先頭列)にのみ有効
• 複合主キーPK(A,B)があり、where B=‘...’ という条件をかけた場合、プレフィックスではない
(先頭列ではない)のでプルーニングは起こらないので注意
• 例)SELECT * WHERE series = ‘us-east.appserver01.loadavg’;
• PK(series, time) と主キーが構成されていればはプルーニングされるが
• PK(time, series) と主キーが構成されている場合プルーニングがされない(全部読むしか無
い)
主キーの設計と主キーによるプルーニング
(us-east.appserver01.loadavg, 2016-05-09T15:14:00Z)
(us-east.appserver01.loadavg, 2016-05-09T15:15:00Z)
(us-west.dbserver03.rss, 2016-05-09T15:14:30Z)
(us-west.dbserver03.rss, 2016-05-09T15:14:30Z)
(2016-05-09T15:14:00Z, us-east.appserver01.loadavg)
(2016-05-09T15:14:30Z, us-west.dbserver03.rss)
(2016-05-09T15:15:00Z, us-east.appserver01.loadavg)
(2016-05-09T15:14:30Z, us-west.dbserver03.rss)
PK(series, time) PK(time, series)
〜Note〜
パーティションプルーニングの
方が効果が高いのでまずはそち
らを重視
55 © Cloudera, Inc. All rights reserved.
勘所11
Kuduへのデータ投入
バルクロードはImpala経由で
56 © Cloudera, Inc. All rights reserved.
• HDFSにParquetなどでデータを置いた後に、CTASでバルクインサートする
のが、現時点では最速
• 現行バージョンのImpalaでは、一旦メモリー上でソートを行ってKuduに書き
込もうとするため、特にインサート対象データサイズに対してメモリが不足
している際、顕著に遅くなる
• CTASに /* +noclustered,noshuffle */ ヒントをつけることで高速化につながる
場合がある(将来のバージョンでは挙動が変わる可能性あり)
ImpalaによるHDFS → Kuduバルクインサート
57 © Cloudera, Inc. All rights reserved.
勘所12
データロード後は
テーブルの統計情報を取得
58 © Cloudera, Inc. All rights reserved.
• 統計情報取得コマンド: COMPUTE STATS
• 統計情報は以下のコマンドで閲覧できる
• SHOW TABLE STATS
• SHOW COLUMN STATS
• 統計情報がないと、遅くなる、ハングする、OOMで落ちるなど、
compute stats による統計の取得
統計を取ってないとクエリプロファイルに上記のような警告が出る
WARNING: The following tables are missing relevant table and/or column statistics.
<テーブル名>, <テーブル名>, ...
59 © Cloudera, Inc. All rights reserved.
勘所13
ネットワーク転送時間は意外な落とし穴
60 © Cloudera, Inc. All rights reserved.
• KuduでSCANしたデータはImpalaレイヤーで適切に
aggregationされ、最終結果がSQLを発行したクライアント
に戻る
• Kuduレイヤーでデータ量を十分に絞れない場合、Impala
daemon間のネットワーク転送がオーバーヘッドになりがち
• 特に最終結果が絞られず、例えば100万レコードなどがクラ
イアントやBIツール返る場合、クライアントへの転送に時
間がかかることが多い
KuduとImpalaの通信
集計
例)3億行読んで最終的に
90行に絞られている
〜Note〜
BIツールなどのクライアントへの最終転送はクラス
ターの外の世界なので、ネットワークが相対的に細い、
TCPコネクションが1本、シリアライズ/デシリアライ
ズに時間がかかるなど、オーバーヘッドが大きい
61 © Cloudera, Inc. All rights reserved.
勘所14
Cloudera Managerで性能情報を取得しよう
62 © Cloudera, Inc. All rights reserved.
Impalaのクエリプロファイル
• SQL単体チューニングは、CMの Impala → クエリ より、各クエリの詳細を確
認できる
ある単体クエリの詳細 ノードごとにかかった時間
Kuduレイヤーの情報
63 © Cloudera, Inc. All rights reserved.
勘所15
BIツールが投げるSQLに注意しよう
64 © Cloudera, Inc. All rights reserved.
• BIツールはほとんどの場合SQLにてアクセスする
• Impala経由でKuduにアクセス
• Impala用JDBC/ODBCドライバーを利用
• 重要な点は、「BIツールが投げるSQLを意識する」こと
• BIツールは必ずしも数百億件もの大量データを意識したSQLを投げてこない
BIツールなどからの分析
65 © Cloudera, Inc. All rights reserved.
• 「BIツールが投げるSQL」はImpalaのクエリから確認できる
• Kuduがパーティションプルーニングなどを適切に行うには、SQL
のフィルターがKuduにpush downされる必要がある
• 気をつけるべき例
• 例)region列でパーティションされる際、regionに関数が使わ
れてると、パーティションプルーニングがされない
• 例)BIツールが全ての値をのdistinct値を取得しようとする場合
• 例えばピボットテーブルのフィルターとなっているディメンジョンについ
て、フィルターのリストを生成するために、最初に select distinct が行われ
る。これが100億件のテーブルでこれが発生すると、100億件の hash
distinct が実行されてしまう。
BIツールに合わせた設計
NGOK
66 © Cloudera, Inc. All rights reserved.
勘所16〜
1セッションでは伝えきれないため
お気軽にご相談ください
THANK YOU

Weitere ähnliche Inhalte

Was ist angesagt?

Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...NTT DATA Technology & Innovation
 
オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法Amazon Web Services Japan
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache CassandraYuki Morishita
 
Hive Data Modeling and Query Optimization
Hive Data Modeling and Query OptimizationHive Data Modeling and Query Optimization
Hive Data Modeling and Query OptimizationEyad Garelnabi
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
Apache Tez: Accelerating Hadoop Query Processing
Apache Tez: Accelerating Hadoop Query ProcessingApache Tez: Accelerating Hadoop Query Processing
Apache Tez: Accelerating Hadoop Query ProcessingHortonworks
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用cyberagent
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
 
Using Apache Hive with High Performance
Using Apache Hive with High PerformanceUsing Apache Hive with High Performance
Using Apache Hive with High PerformanceInderaj (Raj) Bains
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編Akira Shimosako
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudNoritaka Sekiyama
 

Was ist angesagt? (20)

Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
 
Apache Hive 紹介
Apache Hive 紹介Apache Hive 紹介
Apache Hive 紹介
 
オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
Hive Data Modeling and Query Optimization
Hive Data Modeling and Query OptimizationHive Data Modeling and Query Optimization
Hive Data Modeling and Query Optimization
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Apache Tez: Accelerating Hadoop Query Processing
Apache Tez: Accelerating Hadoop Query ProcessingApache Tez: Accelerating Hadoop Query Processing
Apache Tez: Accelerating Hadoop Query Processing
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
SASとHadoopとの連携
SASとHadoopとの連携SASとHadoopとの連携
SASとHadoopとの連携
 
Using Apache Hive with High Performance
Using Apache Hive with High PerformanceUsing Apache Hive with High Performance
Using Apache Hive with High Performance
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 

Ähnlich wie Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)

Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介オラクルエンジニア通信
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTT DATA OSS Professional Services
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2Dell TechCenter Japan
 
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...Insight Technology, Inc.
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Cloudera Japan
 
[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス
[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス
[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティスオラクルエンジニア通信
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)オラクルエンジニア通信
 
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)NTT DATA OSS Professional Services
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)オラクルエンジニア通信
 
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)オラクルエンジニア通信
 
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」オラクルエンジニア通信
 
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...Insight Technology, Inc.
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera Japan
 
[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...
[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...
[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...Insight Technology, Inc.
 
[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...
[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...
[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...Insight Technology, Inc.
 
[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...
[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...
[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...オラクルエンジニア通信
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...Insight Technology, Inc.
 
[AWSマイスターシリーズ] Amazon Redshift
[AWSマイスターシリーズ] Amazon Redshift[AWSマイスターシリーズ] Amazon Redshift
[AWSマイスターシリーズ] Amazon RedshiftAmazon Web Services Japan
 

Ähnlich wie Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮) (20)

Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
 
0151209 Oracle DDD OracleとHadoop連携の勘所
0151209 Oracle DDD OracleとHadoop連携の勘所0151209 Oracle DDD OracleとHadoop連携の勘所
0151209 Oracle DDD OracleとHadoop連携の勘所
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
 
[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス
[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス
[Oracle Cloud Days Tokyo2015]成功事例に学べ! ビッグデータ活用のための最新ベストプラクティス
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
 
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
 
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
最強のデータベース基盤“Exadata”をパブリック・クラウドで活用!(Oracle Cloud Days Tokyo 2015)
 
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
 
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219
 
[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...
[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...
[db tech showcase Tokyo 2017] A32: Attunity Replicate + Kafka + Hadoop マルチデータ...
 
[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...
[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...
[db tech showcase Tokyo 2015] B24:最高峰の可用性 ~NonStop SQLが止まらない理由~ by 日本ヒューレット・パ...
 
[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...
[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...
[Modern Cloud Day Tokyo 2019] Oracle Cloud (PaaS/IaaS)入門:事例を聞いて使ってみたくなったら ~サー...
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
 
[AWSマイスターシリーズ] Amazon Redshift
[AWSマイスターシリーズ] Amazon Redshift[AWSマイスターシリーズ] Amazon Redshift
[AWSマイスターシリーズ] Amazon Redshift
 

Mehr von Cloudera Japan

機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介Cloudera Japan
 
HDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsHDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsCloudera Japan
 
分散DB Apache Kuduのアーキテクチャ DBの性能と一貫性を両立させる仕組み 「HybridTime」とは
分散DB Apache KuduのアーキテクチャDBの性能と一貫性を両立させる仕組み「HybridTime」とは分散DB Apache KuduのアーキテクチャDBの性能と一貫性を両立させる仕組み「HybridTime」とは
分散DB Apache Kuduのアーキテクチャ DBの性能と一貫性を両立させる仕組み 「HybridTime」とはCloudera Japan
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
HBase Across the World #LINE_DM
HBase Across the World #LINE_DMHBase Across the World #LINE_DM
HBase Across the World #LINE_DMCloudera Japan
 
Cloudera のサポートエンジニアリング #supennight
Cloudera のサポートエンジニアリング #supennightCloudera のサポートエンジニアリング #supennight
Cloudera のサポートエンジニアリング #supennightCloudera Japan
 
Train, predict, serve: How to go into production your machine learning model
Train, predict, serve: How to go into production your machine learning modelTrain, predict, serve: How to go into production your machine learning model
Train, predict, serve: How to go into production your machine learning modelCloudera Japan
 
Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側Cloudera Japan
 
Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017Cloudera Japan
 
先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方Cloudera Japan
 
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017Cloudera Japan
 
How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017Cloudera Japan
 
Apache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentechApache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentechCloudera Japan
 
Hue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejpHue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejpCloudera Japan
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Japan
 
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016Cloudera Japan
 
Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016Cloudera Japan
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016Cloudera Japan
 
#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計Cloudera Japan
 
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング #cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング Cloudera Japan
 

Mehr von Cloudera Japan (20)

機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介
 
HDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsHDFS Supportaiblity Improvements
HDFS Supportaiblity Improvements
 
分散DB Apache Kuduのアーキテクチャ DBの性能と一貫性を両立させる仕組み 「HybridTime」とは
分散DB Apache KuduのアーキテクチャDBの性能と一貫性を両立させる仕組み「HybridTime」とは分散DB Apache KuduのアーキテクチャDBの性能と一貫性を両立させる仕組み「HybridTime」とは
分散DB Apache Kuduのアーキテクチャ DBの性能と一貫性を両立させる仕組み 「HybridTime」とは
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
HBase Across the World #LINE_DM
HBase Across the World #LINE_DMHBase Across the World #LINE_DM
HBase Across the World #LINE_DM
 
Cloudera のサポートエンジニアリング #supennight
Cloudera のサポートエンジニアリング #supennightCloudera のサポートエンジニアリング #supennight
Cloudera のサポートエンジニアリング #supennight
 
Train, predict, serve: How to go into production your machine learning model
Train, predict, serve: How to go into production your machine learning modelTrain, predict, serve: How to go into production your machine learning model
Train, predict, serve: How to go into production your machine learning model
 
Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側
 
Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017
 
先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方
 
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
 
How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017
 
Apache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentechApache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentech
 
Hue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejpHue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejp
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
 
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
 
Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016
 
#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計
 
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング #cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
 

Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)

  • 2. 2 © Cloudera, Inc. All rights reserved. 佐藤貴彦 (さとうたかひこ) / takahiko@cloudera.com セールスエンジニア • お客様がCloudera製品及び関連技術をを活用できるよう、一緒に議論するのがメインの仕事 これまでの経験 • Internet & Network(大学) • RDBMS(1社目) • NoSQL(2社目) • Hadoopエコシステム(3社目) ←Now! 自己紹介
  • 3. 3 © Cloudera, Inc. All rights reserved. • Apache Kuduは、HDFSやHBaseに続き、Hadoopエコシステムにおけるスト レージ層として登場しました。 • 一方、同時実効性の高いワークロードをサポートするImpalaとの組み合わせが 注目されています。 • 本セッションでは、Impala + Kudu の組み合わせによるDWH構築の勘所や チューニングポイントを徹底的に解説します。 今回お話する概要
  • 4. © Cloudera, Inc. All rights reserved. Clouderaが提供するデータウェアハウスとは?
  • 5. 5 © Cloudera, Inc. All rights reserved. Cloudera Data Warehouse - オンプレ/クラウドで利用可能な分析基盤 SQL開発者 分析ワークベンチ アナリスト 任意のBIツール マイグレーション とジョブ最適化 Workload XM 監査と データガバナンス Navigator 分析向けSQLエンジン Impala クエリエンジン & 処理エンジン オブジェクトストレージ S3 | ADLS ストレージ Cloudera Data Warehouse ETL向けSQLエンジン Hive on Spark ローカルストレージ HDFS | Kudu
  • 6. 6 © Cloudera, Inc. All rights reserved. 処理エンジン各種製品との組み合わせ クエリエンジン (Impala) ストレージ (Kudu) ストレージ (S3) ストレージ (HDFS) 処理エンジン (Impala) 処理エンジン (Spark) 処理エンジン ストレージ エンジン クエリエンジン (Hive) 処理エンジン (MapReduce) ストレージ (ADLS) クエリエンジン (SQL) 処理エンジン ストレージエンジン カタログ クエリエンジン モノリシックな 分析データベース (一般的なリレーショナルDB含む) エコシステムで構成された 分析データベース カタログ (HMS)
  • 7. 7 © Cloudera, Inc. All rights reserved. Hadoopのためのスケーラブルな分散ファイルシステム • 一般的なファイルシステムと同様どのようなデータもファイルとして保存可能 • 非構造化データ:生ログ(txt)、画像や動画などのバイナリ、etc... • 構造化データ:csv, avro, parquet, etc... • ファイルはブロックに分割されて各ノードに分散配置 • 大量データをフルスキャンをすることに特化している → ETL処理 • IO効率が良くなるよう、大きなファイルサイズを想定(数百MB〜GB) • 高スループットを重要視している • データのランダムな更新ができない • ファイルの末尾に追加はできる ストレージ:HDFSはあらゆるデータを扱える分散ファイルシステム HDFS 1 2 3 4 複数ノードで1つのファイルシステム
  • 8. 8 © Cloudera, Inc. All rights reserved. 分析向けのスケーラブルなストレージエンジン • 一般的なリレーショナルデータベースのように、表形式でデータを格納 • 構造化されたテーブルでデータを表現 • 列ごとに厳密にデータ型を定義 • 物理的にはカラムナー構造になっており、列単位の集計に強い • テーブルの個々の行レベルのアクセス、特定列の大量スキャンのどちらも強い • データのランダムな更新と、データの大量スキャンを同時に行える • クラスターで秒間数百万のリード/ライト • 1ノードあたり数GB/秒のリードスループット ストレージ:Kuduは構造化データ向けの更新可能ストレージ 複数ノードで1つのデータベース Kudu
  • 9. 9 © Cloudera, Inc. All rights reserved. • Hive on Spark は SQLをSparkの処理に変換する • Sparkによるプログラミングをすることなく、SQLを記述するだけでETL的な 処理が可能 クエリエンジン:Hive on Sparkを用いたSQLによるETL処理 クエリエンジン (Impala) ストレージ (Kudu) ストレージ (S3) ストレージ (HDFS) 処理エンジン (Impala) 処理エンジン (Spark) クエリエンジン (Hive) 処理エンジン (MapReduce) ストレージ (ADLS) カタログ (HMS)
  • 10. 10 © Cloudera, Inc. All rights reserved. クエリエンジン:Impalaを用いた分析SQL クエリエンジン (Impala) ストレージ (Kudu) ストレージ (S3) ストレージ (HDFS) 処理エンジン (Impala) 処理エンジン (Spark) クエリエンジン (Hive) 処理エンジン (MapReduce) ストレージ (ADLS) カタログ (HMS) • Kudu自体はSQLエンジンを持たず、他の製品に頼っている • 特にImpalaとの親和性が高い(更新からスキャンまでなんでもSQLででき る)
  • 11. 11 © Cloudera, Inc. All rights reserved. 処理エンジン:SparkからKuduへのアクセス クエリエンジン (Impala) ストレージ (Kudu) ストレージ (S3) ストレージ (HDFS) 処理エンジン (Impala) 処理エンジン (Spark) クエリエンジン (Hive) 処理エンジン (MapReduce) ストレージ (ADLS) カタログ (HMS) • Sparkからであれば、SQL経由のク エリと異なり、KuduのAPIを直接使 うことができる • SparkSQLとしての実行も可能
  • 12. © Cloudera, Inc. All rights reserved. Cloudera Data Warehouse はどこへ向かっているのか?
  • 13. 13 © Cloudera, Inc. All rights reserved. データウェアハウスと言われて想像するもの SQL? DWH? BI? OLAP?RDBMS? データウェアハウス DataMart? Analytic DB?
  • 14. 14 © Cloudera, Inc. All rights reserved. データウェアハウス • データウェアハウスとは、ビル・インモン(Bill Inmom)氏が提唱した概念 • 「基本データ / 業務系データ」から「派生データ / 意思決定(DSS)データ」へ • 当時(90年代〜)は業務データベースからデータを抽出し、分析データベースへ マーケティング 営業 ERP SCM 業務系データ ETL データウェアハウス ETL データマート ETL ETL 更新 更新
  • 15. 15 © Cloudera, Inc. All rights reserved. 業務データベースから分析データベース • 業務DBは企業内で生成された「内部データ」を「構造化データ」として保持 • しかし分析DBであるDWHでは、内部データだけでなく「外部データ」も組み 合わせて使うことがある • 外部データは「非構造化データ」となる場合も多い 業務DB 分析DB (DWH) ETL更新 外部データ 内部データ 非構造化 データ ETL
  • 16. 16 © Cloudera, Inc. All rights reserved. データウェアハウスにおけるワークロード • 業務DBは、OLTP(online transaction processing)系のワークロード • 業務処理、更新系(挿入、更新、削除)、1行単位のスキャン • 分析DBは、OLAP(online analytical processing)系のワークロード • 分析処理、参照系、フルスキャン 業務DB 分析DB (DWH) ETL ETL データマート データの更新頻度 更新系 参照系 OLTP系のワークロード OLAP系のワークロード
  • 17. 17 © Cloudera, Inc. All rights reserved. RDBのスケーラビリティはスケールアップから • スケールアップするにも、OLTPはせいぜい1TBのRAMに収まるまで • スケールアウトは、シェアードナッシングが基本で設計運用で対処 OLTPとOLAPの世界は分離 • 異なる2種類のワークロードをどのように対処するか 進歩しつつはあるも、依然として大規模データの分析に困難 リレーショナルDBによるデータウェアハウスと insert/update/delete OLTPの世界 OLAPの世界(DWH) BIツール select ETL
  • 18. 18 © Cloudera, Inc. All rights reserved. スケーラビリティの高いHadoopエコシステム • スケールアウトでペタバイト(PB)級のデータも処理可能 HDFSは非構造化データもそのまま扱える HDFSは大規模スキャンが得意なので、OLAP系のアクセスは得意 • Impala/Hive経由でSQLによるスキャンもできる • しかしHDFSは更新(ランダムライト)は得意ではないため、OLTP系はHBase併用 しかしHBaseからの結局データ変換が必要ですぐさま分析することができない Hadoopエコシステムを用いたデータウェアハウス put / delete OLTPの世界 OLAPの世界 BIツールselect HBase ImpalaHadoopの世界 data ingestion HDFS ETL
  • 19. 19 © Cloudera, Inc. All rights reserved. HTAP(Hybrid Transactional/Analytic Processing)系のワークロード • OLTP系ワークロードと、OLAP系ワークロードを1つのDBでこなせる • OLTPのようにデータを受け続け、OLAPの様に分析をし続ける、そんなハイブ リッド型のアーキテクチャに対応 • データウェアハウスやデータマートを更新する時間を待つ必要が無い • もちろん必要に応じて個々のマートを作るといった処理も可能 Hadoopエコシステムを用いた次世代データウェアハウス insert/update/delete HTAPの世界(DWH) BIツール select Kudu
  • 20. 20 © Cloudera, Inc. All rights reserved. データソース データウェアハウスシステムとしての構成例 各種非構造化データ (HDFS) 分析SQL (Impala) 加工処理等 (Spark Streaming) データ取得 (Flume) ETL・バッチ SQL (Hive/Spark) 業務DB・分析DB (Kudu) IoTセンサー データソース データソース サーバー ログ データ取得 (Flume) BIツール BIツール BIツール アプリ ETLツール MQTT BrokerIoTセンサー データ取得 アプリ アプリ BIツール 業務DB・分析DB クエリ/処理エンジン 業務DB・分析DB メッセージ キュー (Kafka) 加工処理等 (アプリ)
  • 21. 21 © Cloudera, Inc. All rights reserved. データソース データウェアハウスシステムとしての構成例 各種非構造化データ (HDFS) 分析SQL (Impala) 加工処理等 (Spark Streaming) データ取得 (Flume) ETL・バッチ SQL (Hive/Spark) 業務DB・分析DB (Kudu) IoTセンサー データソース データソース サーバー ログ データ取得 (Flume) BIツール BIツール BIツール アプリ ETLツール MQTT BrokerIoTセンサー データ取得 アプリ アプリ BIツール 業務DB・分析DB クエリ/処理エンジン 業務DB・分析DB メッセージ キュー (Kafka) 加工処理等 (アプリ) 今日の対象はこの範囲
  • 22. © Cloudera, Inc. All rights reserved. Impala + Kuduを用いたデータウェアハウス構築の勘所
  • 23. 23 © Cloudera, Inc. All rights reserved. 勘所1 まずはマニュアルの最低要件を確認
  • 24. 24 © Cloudera, Inc. All rights reserved. • Impala • Kudu マニュアルの最小要件はあくまでも「最小」要件 https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_hardware_requirements.html 〜Note〜 ここで確認するのは、それぞ れ最低でもこのぐらいのリ ソースを必要としているんだ という感覚。 〜Note〜 Impala はメモリを多めに要求。 Kuduは、マスターはリソース をあまり必要としない。
  • 25. 25 © Cloudera, Inc. All rights reserved. 勘所2 まず設定変更すべきはメモリ上限
  • 26. 26 © Cloudera, Inc. All rights reserved. • デフォルトのメモリ上限は小さめになっているので、必要な量まであげる • Impalaの mem_limit の必要量は、SQLの種類(JOINが多いかなど)次第 • Kuduの memory_limit_hard_bytes は、特に更新(INSERT/UPDATE)が多い環 境では、多めに設定すること メモリ設定をデフォルトから変更 〜Note〜 Kuduはメモリが足りず更新を受け付 けられない場合、クライアントに バックプレッシャーを返す
  • 27. 27 © Cloudera, Inc. All rights reserved. 勘所3 机上のチューニングではなく 実際に実検証にて確認しよう
  • 28. 28 © Cloudera, Inc. All rights reserved. 実検証による基礎値の取得 〜Note〜 クラウド環境による簡易検証など、 基礎値を取得することによって、サ イジングの精度をあげ、またその先 のチューニングを容易にする。 実検証をし各種メトリクスを取得し、設計やチューニングの基礎値とする
  • 29. 29 © Cloudera, Inc. All rights reserved. 勘所4 Kudu単体ではなくHDFSも使おう
  • 30. 30 © Cloudera, Inc. All rights reserved. 非構造化データを扱うため • KuduはRDBと同様にテーブル定義を厳密に行う • 外部データや非構造化データを扱うためにHDFSが役立つ データのexport/importなどを行うため • KuduテーブルとHDFS上のparquetテーブルは、Impalaから透過的に扱える • 実際にはHDFS DN上のデータからKudu TS上のデータへコピー • 初期ロード、バルクロードが高速 • SELECT INSERT や CTAS で行う(後ほど解説) なぜHDFSもあったほうがよいのか? 分析DB (DWH) 外部データ 非構造化 データ HDFS Kudu Impala
  • 31. 31 © Cloudera, Inc. All rights reserved. Kudu • WAL用 - SSD x1 • Data用 - SSD/HDD x複数本 • SSDに最適化されているがHDDも可 • TabletServerごとに保存可能な合計データ サイズは、Kudu 1.7 / CDH 5.15 では 8TB までが目安 HDFS • DataNode用 - HDD x複数本 • KuduとHDFSはアクセス特性が異なるため、 理想としてはディスクは分けた方がよいが、 用途次第ではではKuduとディスクの共有 もあり Kudu及びHDFSの物理構成 KM ZK マスターの物理構成例 〜Note〜 ディスク構成はあくまで一例、理想を言えばサービスや ロールごとに独立させるべきだが、小規模の場合同居させ ても問題ない(要相談) OS (RAID1) NN JN Kudu WAL Kudu Data HDFS NN (RAID1) JN ZK TS DN ワーカーの物理構成例 OS Kudu WAL Kudu Data HDFS DN (JBOD) ...
  • 32. 32 © Cloudera, Inc. All rights reserved. 勘所5 ディスクの本数は多めに
  • 33. 33 © Cloudera, Inc. All rights reserved. ディスクの本数はIOの並列度を稼ぐ上で重要 • 並列度 = ディスク本数 x ノード数 何本つけるか? • ディスクの本数は「並列度」と「ストレージ容量」の両方に影響 • Kuduは1ノードあたりの最大容量が 8TB でHDFSに比べると小さめ 例1) 500GB SSD x16本 例2) 1TB HDD x8本 ディスクの本数がDWHの性能を左右する 〜Note〜 あくまで例なので、OS分やWAL用は別途専用ディス クを与えること。HDFSとはワークロード次第では共 用もあり。また8TBは推奨値にすぎないので、これを 超える場合もテストをした上で検討の余地あり https://kudu.apache.org/docs/known_issues.html
  • 34. 34 © Cloudera, Inc. All rights reserved. 性能面 HDDかSSDか? • 特にレイテンシ(応答速度)が重要なディスクにはSSDを推奨 • Kudu TS の WAL • Kafka の ZooKeeper • Kuduのデータ用ディスクについてもSSDに最適化されており、可能であればSSD推奨 • もちろんHDDでも動くが十分に検証する JBODかRAIDか? • 基本的にデータを格納する領域にはJBOD(Just Bunch Of Disks)がよい • ↓可用性の観点では必要に応じてRAID10 可用性 単一ディスクかRAIDか? • OS領域やWALなど、それぞれ専有ディスクを与えるべき部分の冗長性をどうするか? • 単一ディスク障害がすぐさまノード障害となり、その影響度が高い場合RAID1またはRAID10 • ノード障害となっても、他のノードでカバーできるなら単一ディスクも可、そこはトレードオフ 性能と可用性からみたディスクの考慮 〜Note〜 ZooKeeperは一般に低レイテンシを要求 するが、用途次第ではHDDでも可
  • 35. 35 © Cloudera, Inc. All rights reserved. • HDFSのDataNode用データディレクトリ、KuduのTabletServer用データディレクトリは、複数 本のディスクをJBODで構成する • JBODとは、RAIDなどを設定せず各ディスクをそのままOSに認識させること • HDFSやKuduといったストレージは、JBODで性能が出るような実装がされている • 例えば4本のディスクがある場合 • 例1)それぞれをOS上で個別のブロックデバイス(/dev/sdb, /dev/sdc, /dev/sdd, /dev/sdf など) として認識で きるようにし、それらをHDFSやKuduに使わせる • 例2)ハードウェアRAIDが既に組み込まれておりかつJBODモードが設定上できない場合などは、4本それぞ れを個別に「1ディスクだけのRAID0構成」として、OS上から4本個別に認識できるようにしておくことは OK • 例3)RAID 0, 5, 6 などで4本を1つにストライピングする構成は非推奨 ディスクは原則JBOD構成で RAID0 RAID 0/5/60 0 0 0 例1) 通常のJBOD構成 例2) RAID0でのJBOD構成 例3) ストライピングNGOK OK
  • 36. 36 © Cloudera, Inc. All rights reserved. 勘所6 適切なデータ型を考えよう
  • 37. 37 © Cloudera, Inc. All rights reserved. データモデル • リレーショナルデータベースに似ている • テーブル構造 • 各列は強いデータ型を持つ • 主キーを持つ カラムナー • 物理構造として、列ごとにデータが分離し ている • 集計する際、必要な列のみをスキャン • 例)平均気温を出す KuduのスキーマはリレーショナルDBに似ている humidity 83 81 81 83 80 sensor_i d 1 2 2 3 3 time 1531975456 1531975457 1531975458 1531975459 1531975460 region TOKYO TOKYO TOKYO TOKYO KYOTO temp 32.35 33.12 33.12 32.36 37.00
  • 38. 38 © Cloudera, Inc. All rights reserved. 制約 • 主キー列は必須かつユニーク制約だが、他の列はNULLも可 能 データ型 • Boolean • 8/16/32/64 bit signed integer • timestamp (64-bit microseconds Unix epoch) • float/double (IEEE-754) • UTF-8 encoded string(64KBまで) • decimal • Binary (64KBまで) データ型の重要性 • エンコーディングと圧縮による、IOと保存容量の効率化 列のデータ型 sensor_i d time region temp humidity 1 1531975456 TOKYO 32.35 83 2 1531975457 TOKYO 33.12 81 2 1531975458 TOKYO 33.12 81 3 1531975459 TOKYO 32.36 83 3 1531975460 KYOTO 37.00 80 INT TIMESTAMP STRING DOUBLE INT
  • 39. 39 © Cloudera, Inc. All rights reserved. 適切なデータ型を使う理由 • 保存するデータ容量の削減するため • フィルター(述語)などを効率よく適用するため • 基本はリレーショナルDBの考え方ととあまりかわらない ありがちなNG例) • 数字を文字列で表現:"1500-0001231-12414" • 日付を文字列で表現:"2018-11-06" 適切なデータ型とは? sensor_i d time region temp humidity 1 1531975456 TOKYO 32.35 83 2 1531975457 TOKYO 33.12 81 2 1531975458 TOKYO 33.12 81 3 1531975459 TOKYO 32.36 83 3 1531975460 KYOTO 37.00 80 INT TIMESTAMP STRING DOUBLE INT 〜Note〜 扱うデータ量がお多いため、少しで も効率よく格納することで、全体の データ削減につながる。
  • 40. 40 © Cloudera, Inc. All rights reserved. 勘所7 エンコーディングはまずは自動で十分
  • 41. 41 © Cloudera, Inc. All rights reserved. エンコーディング(符号化) • データのbit表現をどう表すかのこと • 列にデータ型があるから適切なエンコーディングが可能 • エンコーディングによりデータサイズやIOの削減が可能 基本はデフォルトの設定で十分 列のエンコーディング humidity 83 81 81 83 80 sensor_i d 1 2 2 3 3 time 1531975456 1531975457 1531975458 1531975459 1531975460 region TOKYO TOKYO TOKYO TOKYO KYOTO temp 32.35 33.12 33.12 32.36 37.00 この例のようにカーディナリティの低いSTRINGの列を、 文字列(UTF-8)のまま格納するのは効率が悪い。 辞書の索引の様に、置き換えることで、格納効率が格段に上がる 〜Note〜 データのカーディナリティやソートを考えた際に、run length や prefix encoding が良いと判断されるときは、変更を行う価値あり region 1 1 1 1 2 dictionary 1:TOKYO 2:KYOTO 3:OSAKA
  • 42. 42 © Cloudera, Inc. All rights reserved. 勘所8 列圧縮は必要に応じて明示的にLZ4設定
  • 43. 43 © Cloudera, Inc. All rights reserved. • Kuduは列単位でデータの圧縮が可能 • LZ4、Snappy、zlib • 圧縮は圧縮速度と圧縮サイズのバランスを考える • 圧縮処理はCPUと時間を使うが、圧縮によってサイズが減ればIO量を 減らすことができる • 一般的に圧縮/展開速度と圧縮サイズの面でLZ4が最もバランスが良く • 圧縮率だけみるならzlibが最も高い • 通常の列はデフォルトでは無圧縮になっている • まずはLZ4による圧縮を試すのがよい • Bitshuffleエンコーディングは例外で、内部で自動的にLZ4で圧縮が行わ れるので、その上に追加で圧縮を掛ける必要はない 列圧縮 〜Note〜 つまり圧縮とは、IOのボト ルネックをCPU側に寄せる ものである 〜Note〜 主キー列の様にソートされ てる列は圧縮効率がよい humidity 83 81 81 83 80 sensor_i d 1 2 2 3 3 time 1531975456 1531975457 1531975458 1531975459 1531975460 region TOKYO TOKYO TOKYO TOKYO KYOTO temp 32.35 33.12 33.12 32.36 37.00
  • 44. 44 © Cloudera, Inc. All rights reserved. 勘所9 マルチレベルパーティションを使いつつ 合計パーティション数を意識しよう
  • 45. 45 © Cloudera, Inc. All rights reserved. • Kuduはパーティションを持ち、データを分割することができる • レンジパーティション • ハッシュパーティション • マルチレベルパーティション • レンジとハッシュの組合せ • 複数のハッシュの組合せ • Kuduのパーティションは、タブレットと対応する Kuduにおけるタブレットとパーティション Tablet Partition パーティション に分割
  • 46. 46 © Cloudera, Inc. All rights reserved. • レンジパーティションでは、完全に順序付けされたレンジパーティションキー を使って、行を分散させる • このパーティションキーは、主キーのサブセットである必要がある • ハッシュパーティションを併用しない場合、各レンジパーティションは、完全 に1つのタブレットと対応する • つまりレンジの個数だけ、タブレットが存在する レンジパーティション
  • 47. 47 © Cloudera, Inc. All rights reserved. • ハッシュ値によって、値を複数のバケットの1つに対応させる • ハッシュパーティション単一であれば、各バケットはそれぞれ1つのタブレッ トに一致する • バケットの数はテーブル作成時に設定し、後から変更はできない • 通常は主キーをハッシュ用の列として使うが、主キー列のサブセットを使うこ ともできる • テーブルに順序アクセスをする必要がない場合は効果的 • 特に書き込みにおいて、ホットスポットや、タブレットサイズの不均衡を緩和 することに役立つ ハッシュパーティション
  • 48. 48 © Cloudera, Inc. All rights reserved. • マルチレベルパーティションでは、0個以上のハッシュパーティションと、レ ンジパーティションを組み合わせることが可能 • 制約として、複数レベルのハッシュパーティションが、同じ列をハッシュして はならない • マルチレベルパーティションでは、合計タブレット数は、各レベルのパーティ ション数の積になる マルチレベルパーティション 〜Note〜 多用すると、タブレット数が膨大になる のでよく考えて設計をする 〜Note〜 パーティションキーは主キーに含まれて いる必要がある
  • 49. 49 © Cloudera, Inc. All rights reserved. CREATE TABLE時のパーティション設定例 ハッシュパーティションの例 コンポジットパーティションの例 range(20) x hash(4) → 60パーティション hash(16) → 16パーティション 〜Note〜 さらにパーティションは3つのレプリカを持つ ため、実際にはさらにこの3倍存在している。 〜Note〜 さらにパーティションは3つのレプリカを持つ ため、実際にはさらにこの3倍存在している。
  • 50. 50 © Cloudera, Inc. All rights reserved. • 現在のところパーティションに関する制約がスキーマ設計の制約につながる • レンジパーティションのadd/dropのみ可能、それ以外はパーティションの変更は不可 • とくに後からノード追加が想定される場合、パーティションを多めに用意 • パーティション(タブレット)を各ノードに配分するため、十分なパーティ ション数がないと、ノード追加してもノードあたりのパーティション数が減る 基本はマルチレベルパーティションを使う ノード追加時に配分 〜Note〜 パーティション数を変えるには、 レンジパーティションの追加削除 しか現状はできない
  • 51. 51 © Cloudera, Inc. All rights reserved. • タブレット数を意識 • タブレットはパーティションと対応、複数の種類のパーションを利用した場合、その積になる • スキャンは1タブレットごとに1つのスキャナー • 基本的には、スキャンの並列度を考えると1ノードあたりのタブレットは多いほ うが良いが、CPUコア数を超過すべきではない • 大規模テーブルのタブレット数の目安 • CPUのコア数から並列度を考慮 • 小規模テーブルのタブレット数の目安 • 1タブレットに少なくとも1GB程度のデータが入るように調整 マルチレベルパーティションの考え方 タブレット数 = × ハッシュバケット 1の数 ... × ハッシュバケット 2の数 レンジの数 〜Note〜 フルスキャンの際、各ノードIO並列度が いくつになるかを意識する
  • 52. 52 © Cloudera, Inc. All rights reserved. 勘所10 主キーの設計はパーティションとセット
  • 53. 53 © Cloudera, Inc. All rights reserved. • 主キーの設計が最重要な1つ • パーティションキーは主キーに含まれる必要があるため、 複合主キーを構成することが多い • 例)時系列によるキー + パーティションキー • Kuduは、スキャンのフィルター条件(WHERE 句)を判断し、不要なパーティションは読み取り をスキップ • ハッシュパーティションのプルーニング • 全てのハッシュ列に等価(=)の述語を含める必要がある • レンジパーティションのプルーニング • レンジパーティション列に、等価(=)または範囲 (<,>,≦,≧,etc.)を含む必要がある 主キーの設計とパーティションのプルーニング 〜Note〜 パーティションを読まないということは、 並列度自体は下がってしまうことに注意
  • 54. 54 © Cloudera, Inc. All rights reserved. • Kuduの主キーは、クラスターインデックスになっている • 1つのタブレット内にある全ての行は、主キーのソート順に保持される • スキャンの述語に、等価(=)、範囲(<,>,≦,≧,etc.)などがある場合、合致しないものはIOを スキップする • 主キーによるプルーニングは、主キーのプレフィックス(先頭列)にのみ有効 • 複合主キーPK(A,B)があり、where B=‘...’ という条件をかけた場合、プレフィックスではない (先頭列ではない)のでプルーニングは起こらないので注意 • 例)SELECT * WHERE series = ‘us-east.appserver01.loadavg’; • PK(series, time) と主キーが構成されていればはプルーニングされるが • PK(time, series) と主キーが構成されている場合プルーニングがされない(全部読むしか無 い) 主キーの設計と主キーによるプルーニング (us-east.appserver01.loadavg, 2016-05-09T15:14:00Z) (us-east.appserver01.loadavg, 2016-05-09T15:15:00Z) (us-west.dbserver03.rss, 2016-05-09T15:14:30Z) (us-west.dbserver03.rss, 2016-05-09T15:14:30Z) (2016-05-09T15:14:00Z, us-east.appserver01.loadavg) (2016-05-09T15:14:30Z, us-west.dbserver03.rss) (2016-05-09T15:15:00Z, us-east.appserver01.loadavg) (2016-05-09T15:14:30Z, us-west.dbserver03.rss) PK(series, time) PK(time, series) 〜Note〜 パーティションプルーニングの 方が効果が高いのでまずはそち らを重視
  • 55. 55 © Cloudera, Inc. All rights reserved. 勘所11 Kuduへのデータ投入 バルクロードはImpala経由で
  • 56. 56 © Cloudera, Inc. All rights reserved. • HDFSにParquetなどでデータを置いた後に、CTASでバルクインサートする のが、現時点では最速 • 現行バージョンのImpalaでは、一旦メモリー上でソートを行ってKuduに書き 込もうとするため、特にインサート対象データサイズに対してメモリが不足 している際、顕著に遅くなる • CTASに /* +noclustered,noshuffle */ ヒントをつけることで高速化につながる 場合がある(将来のバージョンでは挙動が変わる可能性あり) ImpalaによるHDFS → Kuduバルクインサート
  • 57. 57 © Cloudera, Inc. All rights reserved. 勘所12 データロード後は テーブルの統計情報を取得
  • 58. 58 © Cloudera, Inc. All rights reserved. • 統計情報取得コマンド: COMPUTE STATS • 統計情報は以下のコマンドで閲覧できる • SHOW TABLE STATS • SHOW COLUMN STATS • 統計情報がないと、遅くなる、ハングする、OOMで落ちるなど、 compute stats による統計の取得 統計を取ってないとクエリプロファイルに上記のような警告が出る WARNING: The following tables are missing relevant table and/or column statistics. <テーブル名>, <テーブル名>, ...
  • 59. 59 © Cloudera, Inc. All rights reserved. 勘所13 ネットワーク転送時間は意外な落とし穴
  • 60. 60 © Cloudera, Inc. All rights reserved. • KuduでSCANしたデータはImpalaレイヤーで適切に aggregationされ、最終結果がSQLを発行したクライアント に戻る • Kuduレイヤーでデータ量を十分に絞れない場合、Impala daemon間のネットワーク転送がオーバーヘッドになりがち • 特に最終結果が絞られず、例えば100万レコードなどがクラ イアントやBIツール返る場合、クライアントへの転送に時 間がかかることが多い KuduとImpalaの通信 集計 例)3億行読んで最終的に 90行に絞られている 〜Note〜 BIツールなどのクライアントへの最終転送はクラス ターの外の世界なので、ネットワークが相対的に細い、 TCPコネクションが1本、シリアライズ/デシリアライ ズに時間がかかるなど、オーバーヘッドが大きい
  • 61. 61 © Cloudera, Inc. All rights reserved. 勘所14 Cloudera Managerで性能情報を取得しよう
  • 62. 62 © Cloudera, Inc. All rights reserved. Impalaのクエリプロファイル • SQL単体チューニングは、CMの Impala → クエリ より、各クエリの詳細を確 認できる ある単体クエリの詳細 ノードごとにかかった時間 Kuduレイヤーの情報
  • 63. 63 © Cloudera, Inc. All rights reserved. 勘所15 BIツールが投げるSQLに注意しよう
  • 64. 64 © Cloudera, Inc. All rights reserved. • BIツールはほとんどの場合SQLにてアクセスする • Impala経由でKuduにアクセス • Impala用JDBC/ODBCドライバーを利用 • 重要な点は、「BIツールが投げるSQLを意識する」こと • BIツールは必ずしも数百億件もの大量データを意識したSQLを投げてこない BIツールなどからの分析
  • 65. 65 © Cloudera, Inc. All rights reserved. • 「BIツールが投げるSQL」はImpalaのクエリから確認できる • Kuduがパーティションプルーニングなどを適切に行うには、SQL のフィルターがKuduにpush downされる必要がある • 気をつけるべき例 • 例)region列でパーティションされる際、regionに関数が使わ れてると、パーティションプルーニングがされない • 例)BIツールが全ての値をのdistinct値を取得しようとする場合 • 例えばピボットテーブルのフィルターとなっているディメンジョンについ て、フィルターのリストを生成するために、最初に select distinct が行われ る。これが100億件のテーブルでこれが発生すると、100億件の hash distinct が実行されてしまう。 BIツールに合わせた設計 NGOK
  • 66. 66 © Cloudera, Inc. All rights reserved. 勘所16〜 1セッションでは伝えきれないため お気軽にご相談ください