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