prestoクエリログの保存/分析機能の構築 #yjdsnight
TRANSCRIPT
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
2017年3月15日
ヤフー株式会社 クエリエンジンチーム 曾臻
Prestoクエリログの保存/
分析機能の構築
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
2
1. 自己紹介
2. 現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
3
1. 自己紹介
2. 現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
1.自己紹介
4
名前 : 曾 臻
所属 :ヤフー株式会社 D&Sソリューション統括本部 クエリエンジン
経歴 : Presto開発・運用広告システム開発
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
5
1. 自己紹介
2. 現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
2.現在の課題
6
Prestoを再起動したらクエリログが消える
クエリ情報の保存は上限がある
JVMのMetrics分析が難しい
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
7
1. 自己紹介
2. 現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:クエリログ
8
最初の試み
• SYSTEMコネクターでクエリの履歴を取得
• 定期的にクエリ情報をほかのデータベースに保存
参考:https://prestodb.io/docs/current/connector/system.html
SELECT*
FROMsystem.runtime.queries;
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:クエリログ
9
データの保存はまだ課題:
• 保存前にクラスターを再起動したら、クエリログが消える
• 頻繁すぎると、クラスターの負担になる
解決方法:
• クエリ実行でトリガーする
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:クエリログ
10
去年からTeradata、日本テラデータとCoDevを行っている
アメリカ出張でBootcampを実施
Prestoの内部構成、開発手法等を教えてもらった
ハーバード大学も見学(頭が少し良くなった気がする)
日本に戻った後でも活発的に交流している
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:クエリログ
11
コミュニティのエンジニアと意見を交換
1. EventListenerでクエリログ保存
2. JMXコネクターでJVMのMetrics保存
EventListener: https://prestodb.io/docs/current/develop/event-listener.html
JMX: https://prestodb.io/docs/current/connector/jmx.html
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:クエリログ
12
PrestoのPluginを開発し、
クエリ情報をJSONファイルに保存
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:クエリログ
14
クエリログの保存:
Frontend
UI
Presto
Coordinator
Presto
WorkerPresto
WorkerPresto
Worker
Object
storage
(2) Run queries and write logs
(3)Use Fluentd plugin to send logs(1) HTTP requests
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:JMX
15
JVM情報もPresto JMXコネクターを
利用して、簡単に取れた。
しかしどうやって保存?
参考:https://prestodb.io/docs/current/connector/jmx.html
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:JMX
16
JMX情報保存の流れ:
JVM Metrics
→Fluentd plugin + Presto JMX Connector
→ Fluentd s3 plugin
→ 社内Object Storage
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
3.Prestoログの保存:JMX
17
JMX情報の保存:
Presto
Coordinator
Presto
WorkerPresto
WorkerPresto
Worker
Object
storage
(2) Run queries and write logs
(3)Use Fluentd plugin to send logs
(1) JMX Connector(HTTP requests)
select * from "java.lang:type=operatingsystem"
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
18
1. 自己紹介
2. 現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
4.Prestoログの分析
22
• JSONをObject Storageに保存
• Hive MetastoreでTableを作成
• SQL文で、Slow Query/リソース利用の分析
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
23
1. 自己紹介
2. 自己紹介現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
5.アーキテクチャ
24
Frontend
UI
Presto
Coordinator
Presto
WorkerPresto
WorkerPresto
Worker
Object
storage
(2) Run queries and write logs
(3)Use Fluentd plugin to send logs
(1-1) SQL Query(HTTP requests)
(1-2)SQL with JMX Connector (HTTP requests)
Hive
metastore
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Agenda
25
1. 自己紹介
2. 現在の課題
3. Prestoログの保存
4. Prestoログの分析
5. アーキテクチャ
6. まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
6.まとめ
26
1)課題解決• クエリ保存:Presto plugin 開発• JMX情報保存:
JMX connector + fluentd plugin活用2)OSSコミュニティとの交流• 機能追加が順調にできた• コミュニティへの還元もしていきたい