講演資料ダウンロード - Cloudera Japan

Impalaチューニングポイント
ベストプラクティス
ヤフー株式会社
マーケティングソリューションカンパニー
開発本部 業務開発部
杉⼭山 朋広
⾃自⼰己紹介
杉⼭山 朋広
(すぎやま ともひろ)
2002年年ヤフー株式会社⼊入社
Yahoo!ウォレットやYahoo! JAPAN IDなどのIDサービスを経て
現在は広告関連システムを担当
Hadoopの経験は2012年年ごろから
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 カンパニー紹介
動画をご覧ください
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 マーケティングソリューションカンパニー
データ
ソリューション
事業
広告
ソリューション
事業
ビジネス
ソリューション
事業
クリエイティブ
ソリューション
事業
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 アジェンダ
単⼀一クエリがどれくらいの速度度か
ストレージフォーマット
パーティションとブロックサイズ
並列列クエリをどれくらい処理理できるか
並列列アクセスの注意点
その他
Hive,MapReduceのチューニング
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 Impalaについて
HDFSを直接readする低レイテンシなSQLエンジン
Evolution of Impala #hcj2014
http://www.slideshare.net/Cloudera_̲jp/evolution-‐‑‒of-‐‑‒impala-‐‑‒hcj2014
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 検証データ
以下のようなファイルをピックアップ
⾏行行数
サイズ
形式
蓄積期間
総⾏行行数
総サイズ
11億⾏行行/⽇日
12GB(gz)/⽇日
tsvファイル
396⽇日(13カ⽉月)
11億⾏行行/⽇日 × 396⽇日 = 約4,300億⾏行行
12GB/⽇日 × 396⽇日 = 約4,500GB
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 データ構造
⽇日付>ID>属性でユニーク
YYYYMMDD
ID
device
...
count
rank
…
20140101
1413538279
1
...
863
123
…
20140101
1413538320
1
...
1284
14
…
20140101
1413540870
3
...
413
638
…
:
:
:
:
:
:
:
20141231
1413538279
2
...
343
862
…
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 検証環境
以下の30ノードで検証環境を構築
Cloudera Expressをインストール
CPU
RAM
DISK
Nodes
CDH
6 core x 2
64 G
3T x 4
30 nodes (4 x Master + 26 x Slave)
5.1
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 ストレージフォーマット
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 ストレージフォーマットとは
Hadoopの処理理に最適化されたフォーマット
RCFILE
SEQUENCEFILE
AVRO
PARQUET
デフォルトでTEXTのGzipやLZOがサポートされない
= 最初にストレージフォーマットを決める必要がある
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 主要ストレージフォーマット⽐比較
PARQUETを採⽤用
Format
TEXT
AVRO
SEQUENCEFILE
RCFILE
PARQUET
CODEC
Gzip
Snappy
Snappy
Snappy
Snappy
size
11.4 GB
14.7 GB
25.2 GB
16.4 GB
12.9 GB
Create
-‐‑‒
280 s
260 s
270 s
300 s
Hiveで作成・Impalaでカウント
1⽇日分(Gzip12GB・11億⾏行行)をサンプル
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 count(*)
not support
1340 ms
1150 ms
830 ms
730 ms
パーティションとブロックサイズ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 ブロックサイズの最適化
HDFSのブロックサイズの他に
PARQUETのブロックサイズ設定もある
適切切な値を設定する事で
レスポンスの向上が期待できる
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 パーティションによる分割
特定のルールでデータをグループ化して別々に保存
透過的に1テーブルとして扱われる
HDFS
DIR
HDFS
DIR1
HDFS
DIR2
dt=20140101
select * from MyTable
MyTable
select * from MyTable
dt=20140102
MyTable
:
dt=20141231
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 チューニング
パーティションによりファイルの分割度度を調整
64分割
128分割
256分割
必ずHDFSのブロックサイズの⽅方を⼤大きくする
dfs.block.size > parquet.block.size
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 検証クエリ(1⽇日分)
11億⾏行行→3,000⾏行行の絞り込み
サイズは300K程度度
> select ID, device, sum(count), sum(...)
from mytable
where ID = 1413538320
group by ID, device;
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 ブロックサイズ⽐比較
検証データ1⽇日分(Gzip11.4GB)を分割数を変えて⽐比較
ファイル数
HDFSブロックサイズ
PARQUETブロックサイズ
64
512 MB
256 MB
中
128
256 MB
128 MB
平均ファイルサイズ
174 MB
83 MB
40 MB
最⼩小ファイルサイズ
最⼤大ファイルサイズ
84 MB
284 MB
36 MB
180 MB
11 MB
110 MB
6.11 s
4.32 s
3.05 s
最⼤大ファイルの応答時間
⼤大
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 ⼩小
256
128 MB
64 MB
検証クエリ(13ヶ⽉月分)
256分割で13ヶ⽉月分4,300億⾏行行のデータを⽣生成
4,300億⾏行行→3,000⾏行行の絞り込み
サイズは300K程度度
> select ID, device, sum(count), sum(...)
from mytable
where ID = 1413538320
group by ID, device;
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 検証データ全量量テスト
検証データ全量量4,300億⾏行行に対する検証クエリの結果
試⾏行行数
1回⽬目
2回⽬目
3回⽬目
4回⽬目
5回⽬目
応答時間
351.8 s
12.5 s
11.7 s
11.3 s
11.5 s
メタ情報のリフレッシュ直後だけ5〜~6分かかる
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 並列列アクセスの注意点
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 並列列クエリ
Impaladの各ノードに並列列にクエリを発⾏行行
select …
where
ID = 1413538320 and YYYYMMDD = 20140101
select …
where
ID = 1413538320 and YYYYMMDD = 20140101
select …
where
ID = 1413538320 and YYYYMMDD = 20140101
Impalad
Impalad
Impalad
Query Planner
Query Planner
Query Planner
Query Coordinator
Query Coordinator
Query Coordinator
Query Exec Engine
Query Exec Engine
Query Exec Engine
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 並列列クエリ:結果
最⼤大25並列列で、5秒程度度の遅延
20
18
16
14
12
avg
10
sec
8
6
4
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
parallel reqs
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 遅延の原因
select …
where
ID = 1413538320 and YYYYMMDD = 20140101
同じブロックへのアクセス集中
select …
where
ID = 1413538320 and YYYYMMDD = 20140101
select …
where
ID = 1413538320 and YYYYMMDD = 20140101
Impalad
Impalad
Impalad
Query Planner
Query Planner
Query Planner
Query Coordinator
Query Coordinator
Query Coordinator
Query Exec Engine
Query Exec Engine
Query Exec Engine
blk-‐‑‒X
同じブロックへの並列列クエリは
ホットスポットを⽣生む
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 並列列クエリの注意点
できるだけ別々のブロックにアクセスする
select …
where
ID = 1413530001 and YYYYMMDD = 20140101
select …
where
ID = 1413530002 and YYYYMMDD = 20140101
select …
where
ID = 1413530003 and YYYYMMDD = 20140101
Impalad
Impalad
Impalad
Query Planner
Query Planner
Query Planner
Query Coordinator
Query Coordinator
Query Coordinator
Query Exec Engine
Query Exec Engine
Query Exec Engine
blk-‐‑‒a
blk-‐‑‒b
blk-‐‑‒c
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 結果⽐比較
25並列列での遅延を3秒くらい軽減できた
20
15
avg
10
sec
5
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
parallel reqs
同ブロックアクセス
別ブロックアクセス
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 Hive,MapReduceのチューニング
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 RawData(tsv)
Hiveの利利⽤用
Metastoreの作成は⽐比較的⻑⾧長い
(数10分くらい)
Hive
(MapReduce)
Refresh
ImpalaStateStore
※⼿手オペ
MapReduceやOozieで制御
但しHiveMetastoreとImpalaStateStoreの
同期オペレーションが必要
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 Hiveジョブのエラー
ParquetテーブルをHiveで作成
Hiveジョブのreducerがエラー
Examining task ID: task_1407388082801_0126_r_000014 (and more) from job job_1407388082801_0126
Examining task ID: task_1407388082801_0126_r_000027 (and more) from job job_1407388082801_0126
Task with the most failures(4): -----
Task ID:
task_1407388082801_0126_r_000009
URL:
http://test1.yahoo.co.jp:8088/taskdetails.jsp?
jobid=job_1407388082801_0126&tipid=task_1407388082801_0126_r_000009
-----
Diagnostic Messages for this Task:
Error: Java heap space
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 原因:メモリ不不⾜足
parquet.block.size
Parquet x 1ファイルあたりの割当メモリ
default : 134,217,728(128MB)
パーティション数分のメモリが必要
クラスタ全体:128MB x 256partitions = 32GB
ノード当たり:32GB ÷ 26nodes = 約1.23GB
初期のメモリ設定値が1GB/ノードだった
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 対処
以下のパラメータを⾒見見直して解消
mapreduce.map.memory.mb
mapreduce.map.java.opts.max.heap
mapreduce.reduce.memory.mb
mapreduce.reduce.java.opts.max.heap
ブロックサイズの引き下げでもOK
パーティションあたりの平均ファイルサイズが⼩小さい場合
例例)parquet.block.size = 67,108,864
Parquetの作成にはメモリが必要
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 まとめ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 処理理時間のイメージ
Impala:数秒〜~数10秒 ※
MapReduce:数分〜~数時間
HBase:ミリ秒〜~数秒
※)但しリフレッシュ後の初回は数分
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 並列列クエリの注意点
同⼀一ブロックへの並列列アクセスは避ける
同⼀一クエリを避けてノード数を増やせば
並列列性能が期待できる
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 向いているサービス
時系列列データの参照系
明細
履履歴情報
今後の課題・関⼼心
どこまでスケールするか?
100 nodes? 1000 nodes?
Impala 2.0
Impala + HBase
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止 ご清聴ありがとうございました