hive on tezのベストプラクティス
TRANSCRIPT
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
2017年9月15日
大竹 隼人
Hive on Tezのベストプラクティス
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
2
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
3
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
自己紹介
4
大竹 隼人
2013年新卒入社
入社以来、広告ログ集計システムの開発、運用を担当
- プロジェクト案件
- システム刷新
- PoC
- CI/CDの導入
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
5
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Hive on Tezとは
6
Hiveとは
HadoopエコシステムにおけるSQLエンジンの一つ
・SQLに似たHive Query Languageで大量のデータに対して高速な処理が行える
・DWH向けのソフトウェア
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Hive on Tezとは
7
Tezとは
Yarn上で動くデータ処理アプリのための処理エンジン
・Yarnを使ってリソースを管理
・データ処理アプリ向け(Hive,Pigなど)
・MapReduceの教訓を活かしてパフォーマンスの改善
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
8
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Hadoop
適用したシステム
9
Oracleテーブル
(OLTP)配信
Data Pipeline
速報用集計
システム
Hiveテーブル
Hdfs
Hdfs
Hiveテーブル
Hdfs
MapReduce
Hive on Tez Sqoop
統計情報を集計するログ集計システム
広告主様
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
適用したシステム
10
速報用の統計情報に求められてるもの
速報用の統計情報
30分毎に最新の統計情報を提供
→ 安定的に性能をだし続ける必要がある
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Hadoop
適用したシステム
11
Oracleテーブル
(OLTP)配信
Data Pipeline
速報用集計
システム
Hiveテーブル
Hdfs
Hdfs
Hiveテーブル
Hdfs
MapReduce
Hive on Tez Sqoop
統計情報を集計するログ集計システム
広告主様
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
適用したシステム
12
リリースまでの課題
・性能がでない
・安定的に動かない
・再実行を考慮した作りにできない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
適用したシステム
13
リリースまでの課題
・性能がでない
・安定的に動かない
・再実行を考慮した作りにできない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
14
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
15
課題
ジョブのターンアラウンドタイムについて
・目標の性能が満たせてない
・性能が安定していない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
NEW NEW_SAVING SUBMITTED ACCEPTED RUNNING FINAL_SAVING FINISHING
性能改善のために
16
原因確認
ジョブのボトルネックを確認
|--------------- ジョブ実行時間 --------------->|
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
17
原因確認
Yarnログ実行時間 : application_× State change from NEW to NEW_SAVING
実行時間 : application_× State change from NEW_SAVING to SUBMITTED
実行時間 : application_× State change from SUBMITTED to ACCEPTED
実行時間 : application_× State change from ACCEPTED to RUNNING
実行時間 : application_× State change from RUNNING to FINAL_SAVING
実行時間 : application_× State change from FINAL_SAVING to FINISHING
実行時間 : application_× State change from FINISHING to FINISHED
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
18
原因確認
クエリーのボトルネックを確認
・EXPLAIN
・hive.tez.exec.print.summary
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
19
原因確認
EXPLAIN
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
20
原因確認
hive.tez.exec.print.summary=true
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
21
原因と対策
原因 対策
NameNodeの負荷でジョブのSUBMITが遅れている 負荷をかけているクエリーのログ出力を停止
リソースを確保できていない時がある 常に安定的な性能がでるようにリソースを確保
Inputデータ量が多すぎる データの再設計
Reduceタスクが遅い Reducer数の調整
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
22
目標実行時間を満たす並列数を求める
直列時のクエリー実行時間(CPU_TIME_MILLISの合計時間)
目標実行時間
実行時間
必要なcontainer数 = 直列時のクエリー実行時間 / 目標実行時間
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
23
並列数から必要なリソースを求める
確保するパーセンテージ =(必要なcontainer数/ 全体のcontainer数 ) * 100
container数
全体のcontainer数
必要なcontainer数
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
24
データの再設計
一度統計用のInputに特化したテーブルを作成することでInputレコード数を削減
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
25
Reducer数の調整
データ量に応じてスケールし、目標実行時間を満たせるような並列数にする
・hive.exec.reducers.bytes.per.reducer
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
性能改善のために
26
性能をだすために必要なこと
・ボトルネックを明確にする
・リソースの確保
・Reducerの調整
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
27
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
28
課題
正常終了するジョブを運用していくと、失敗するケースが発生してきた
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
29
原因
1.Mapper数が過度に上がりリソースを取得できなかった
2.Mapper数が少なく1Mapperで処理できるデータ量を超えてしまった
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
30
原因1
対象とするInputデータに対して1Mapperあたりのデータサイズが小さすぎた為、Mapper数が過度に上がりリソースを取得できなかった
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
31
原因1 正常に終了するケース
Inputデータ
Map 1
Map 2
Map n
取得できるリソース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
32
原因1 エラーになるケース
Inputデータ
Map 1
Map 2
Map m
取得できるリソース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
33
原因2
対象とするInputデータに対して1Mapperあたりのデータサイズが大きすぎた為、 Mapperで集約する際にOutOfMemoryが発生してしまっていた
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
34
原因2 正常に終了するケース
Inputデータ
Map 1
Map 2
Map n
1Mapで扱えるデータ量
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
35
原因2 エラーになるケース
Inputデータ
Map 1
Map 2
1Mapで扱えるデータ量
Map m
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
36
対策
運用しながら1Mapperが扱うデータサイズを調整する原因 対策
Mapperが過度にあがる 1Mapperが扱う最小のデータ量を調整tez.grouping.min-size
1Mapperが扱うデータ量が多い 1Mapperが扱う最大のデータ量を調整tez.grouping.max-size
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
37
対策
Inputデータ
Map 1
Map 2
Map n
1Mapで扱えるデータ量取得できるリソース
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
安定稼働のために
38
安定的に動かすために必要なこと
・1Mapperが扱うデータ量を設定する
・増加するデータ量に対応する設定を入れる
・実際のデータで運用してチューニングしていく
・チューニングパラメータの変更を容易にしておく
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
39
・自己紹介
・Hive on Tezとは
・適用システムについて
・性能改善のために
・安定稼働のために
・最後に
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
最後に
40
再認識できたこと
デプロイメントサイクルを早くすることの重要性
・早くリリースし本番環境、本番のデータで運用していくことが重要
・予測できない事への修正、チューニングパラメータの迅速な変更が重要