2. ⾃自⼰己紹介
杉⼭山 朋広
(すぎやま ともひろ)
2002年年ヤフー株式会社⼊入社
Yahoo!ウォレットやYahoo! JAPAN IDなどのIDサービスを経て
現在は広告関連システムを担当
Hadoopの経験は2012年年ごろから
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
3. アジェンダ
単⼀一クエリがどれくらいの速度度か
ストレージフォーマット
パーティションとブロックサイズ
並列列クエリをどれくらい処理理できるか
並列列アクセスの注意点
その他
Hive,MapReduceのチューニング
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
4. 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. 無断引⽤用・転載禁⽌止
5. 検証データ
以下のようなファイルをピックアップ
⾏行行数11億⾏行行/⽇日
サイズ12GB(gz)/⽇日
形式tsvファイル
蓄積期間396⽇日(13カ⽉月)
総⾏行行数11億⾏行行/⽇日 × 396⽇日 = 約4,300億⾏行行
総サイズ12GB/⽇日 × 396⽇日 = 約4,500GB
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
6. データ構造
⽇日付>ID>属性でユニーク
YYYYMMDDIDdevice...countrank…
2014010114135382791...863123…
2014010114135383201...128414…
2014010114135408703...413638…
:::::::
2014123114135382792...343862…
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
7. 検証環境
以下の30ノードで検証環境を構築
Cloudera Expressをインストール
CPU6 core x 2
RAM64 G
DISK3T x 4
Nodes30 nodes (4 x Master + 26 x Slave)
CDH5.1
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
9. ストレージフォーマットとは
Hadoopの処理理に最適化されたフォーマット
RCFILE
SEQUENCEFILE
AVRO
PARQUET
デフォルトでTEXTのGzipやLZOがサポートされない
= 最初にストレージフォーマットを決める必要がある
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
10. 主要ストレージフォーマット⽐比較
PARQUETを採⽤用
FormatCODECsizeCreatecount(*)
TEXTGzip11.4 GB-‐‑‒not support
AVROSnappy14.7 GB280 s1340 ms
SEQUENCEFILESnappy25.2 GB260 s1150 ms
RCFILESnappy16.4 GB270 s830 ms
PARQUETSnappy12.9 GB300 s730 ms
Hiveで作成・Impalaでカウント
1⽇日分(Gzip12GB・11億⾏行行)をサンプル
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
13. パーティションによる分割
特定のルールでデータをグループ化して別々に保存
透過的に1テーブルとして扱われる
HDFS
DIR
MyTable
HDFS
DIR2
HDFS
DIR1
MyTable
dt=20140101
dt=20140102
:
dt=20141231
select * from
MyTable
select * from
MyTable
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
14. チューニング
パーティションによりファイルの分割度度を調整
64分割
128分割
256分割
必ずHDFSのブロックサイズの⽅方を⼤大きくする
dfs.block.size > parquet.block.size
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
15. 検証クエリ(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. 無断引⽤用・転載禁⽌止
16. ブロックサイズ⽐比較
検証データ1⽇日分(Gzip11.4GB)を分割数を変えて⽐比較
⼤大中⼩小
ファイル数64128256
HDFSブロックサイズ512 MB256 MB128 MB
PARQUETブロックサイズ256 MB128 MB64 MB
平均ファイルサイズ174 MB83 MB40 MB
最⼩小ファイルサイズ84 MB36 MB11 MB
最⼤大ファイルサイズ284 MB180 MB110 MB
最⼤大ファイルの応答時間6.11 s4.32 s3.05 s
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
18. 検証データ全量量テスト
検証データ全量量4,300億⾏行行に対する検証クエリの結果
試⾏行行数応答時間
1回⽬目351.8 s
2回⽬目 12.5 s
3回⽬目 11.7 s
4回⽬目 11.3 s
5回⽬目 11.5 s
メタ情報のリフレッシュ直後だけ5〜~6分かかる
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
26. Hiveの利利⽤用
Metastoreの作成は⽐比較的⻑⾧長い
(数10分くらい)
MapReduceやOozieで制御
但しHiveMetastoreとImpalaStateStoreの
同期オペレーションが必要
RawData(tsv)
Hive
(MapReduce)
Refresh
ImpalaStateStore
※⼿手オペ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
27. 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_0126tipid=task_1407388082801_0126_r_000009
-----
Diagnostic Messages for this Task:
Error: Java heap space
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
28. 原因:メモリ不不⾜足
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. 無断引⽤用・転載禁⽌止
29. 対処
以下のパラメータを⾒見見直して解消
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. 無断引⽤用・転載禁⽌止
30. まとめ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
31. 処理理時間のイメージ
Impala:数秒〜~数10秒 ※
MapReduce:数分〜~数時間
HBase:ミリ秒〜~数秒
※)但しリフレッシュ後の初回は数分
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
32. 並列列クエリの注意点
同⼀一ブロックへの並列列アクセスは避ける
同⼀一クエリを避けてノード数を増やせば
並列列性能が期待できる
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止