Download - 僕とヤフーと時々Teradata #prestodb
![Page 1: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/1.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ヤフー株式会社
岡田幸大
Presto
僕とヤフーと時々Teradata
![Page 2: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/2.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
自己紹介
• 岡田 幸大
• github - yuokada
• Like: #python, #golang
• 2009/04 ヤフー入社(新卒)
• 2016/10 クエリーエンジン・チーム〜現在
• Presto歴 半年とチョット
![Page 3: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/3.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
• 会社紹介
• クラスター事例紹介
• Presto周りのツール・OSS紹介
• presto-audit
• presto-admin (おまけ)
• まとめ
![Page 4: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/4.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
サービス数は100以上
メディア、コマース、金融・決済など、幅広くサービスを展開
![Page 5: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/5.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
データのバラエティも100以上
検索キーワード、ビュー/クリック、コンテンツ、購買情報、など、多様なデータを活用可能
![Page 6: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/6.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
6
月間 674億PV / 1日9,000万UB
PC + その他
281億 PV
Smart Phone
393億 PVFY16-3Q事業指標 http://ir.yahoo.co.jp/jp/archives/present/2016q3/index.html
![Page 7: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/7.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
NoSQLHadoop RDB
7,000 nodes
150 PB
1000DBs
2,000nodes
Object
Storage
1,500nodes
![Page 8: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/8.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
様々なストレージにあるデータをインタラクティブに分析する必要がある
そこで選ばれたのがPresto
これらのマルチビッグデータを活かすには?
![Page 9: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/9.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
広告入稿系レポートシステム
![Page 10: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/10.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
あるところにこんなシステムがありました...
![Page 11: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/11.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
• ユーザーの操作履歴をNFS上に保存
• ログファイルはPlain Text & 独自フォーマット• 3年間で約40TB(非圧縮)
• 集計・レポート生成処理はgrepベース
広告入稿システム - システムサマリー
重いレポートの出力にかかる時間: 80分
![Page 12: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/12.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース – その1
2016年某日、NFS管理チームからのお知らせ。「2017年9月でNFS退役させるからヨロシク」
EOSL宣言!そしてシステム刷新の気配!
![Page 13: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/13.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
まずは、NFSの後継探し
ヤフー社内で開発・運用され実績もあるObject Storageを選定。
Object Storageの詳細はslideshareで。
![Page 14: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/14.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
NFSのEOSL問題は解決した。だが、レポート出力が遅い問題が残っている。
![Page 15: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/15.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
そこで出てきたのが
![Page 16: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/16.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
Prestoを採用するならファイルフォーマットも
カラムナフォーマットに変えよう!
![Page 17: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/17.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
• 社内で実績があった• Hadoopクラスターで
採用済み• 社内のノウハウを活用
しやすい
ORCを選んだ理由
![Page 18: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/18.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
• ORC化前: 1ヶ月分のログで約770GB(非圧縮)• ORC化後: 1ヶ月分のログで約20GB
ORC化でファイルサイズが劇的に減少
圧縮率97%の驚異的なサイズダウン!
![Page 19: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/19.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
ディレクトリ構成
旧システム(Before Presto)
アカウント毎の1階層
現行システム(After Presto)
日時とアカウントのハッシュ値による2階層
Object Storage上のファイル配置を見直し
![Page 20: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/20.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
旧システム 現行システム
ログの保存場所 NFS Object Storage
ログファイルのフォーマット
Plain text &独自フォーマット
ORCフォーマット
ディレクトリ構成 アカウント毎 日毎&アカウントのハッシュ値で分散
集計処理 grepベース Presto
大幅なモダン化を達成!!
![Page 21: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/21.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース – その1
JobQueue
Frontend
Batch
Object Storage
![Page 22: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/22.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
80
1.50
10
20
30
40
50
60
70
80
90
レポートAの出力までの時間
レポート出力にまでの時間
Before After
ケース – その1
旧システムで80分かかっていたレポートが
新システムで約1分に短縮!!
約97%の時間短縮!
レポート出力まで時間
![Page 23: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/23.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
今回のシステム刷新はほぼ成功(自分視点)。ここまでするのにいろいろ苦労もありました。
![Page 24: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/24.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今回のPresto導入で辛かったこと
• Javaに慣れてないと変換が辛い
• PrestoのINSERTでORCファイルを生成可能だがPrestoのリソースをSELECTに集中させたいので❎
ORCファイルへの変換が手間
![Page 25: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/25.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今回のPresto導入で辛かったこと
• クエリの条件次第でベストなディレクトリは違う• Ex. 月次レポート• Ex. アカウント毎のレポート
• どのクエリに対しても一定程度の時間で完了するディレクトリ構成を見つけるまでに時間を消費した
Object Storage上のディレクトリ構成
![Page 26: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/26.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今回のPresto導入で辛かったこと
• coordinatorが冗長化出来ない• 1クラスターに2台以上Coordinatorが登録出来ない• ダウンタイム・ゼロの運用は厳しい
• NW設計大事!!• NWトラフィックが凄く出る• DCまたいだトラフィックはダメ絶対!
他にも課題が沢山
細かい話は懇親会で。
![Page 27: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/27.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Presto周辺のツール・OSS紹介
![Page 28: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/28.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
![Page 29: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/29.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
1. Prestoの再起動でクエリログが消える
2. クエリの保存数に上限
運用面からのPrestoの課題
![Page 30: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/30.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
• SYSTEMコネクターでクエリ履歴を取得• 取得したクエリ情報をObject Storageに保存
クエリログ保存のための初期実装
![Page 31: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/31.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
1. ログ保存までにPrestoで再起動が発生すると取りこぼす
2. 実行頻度を上げるとシステムの負荷が上がる
クエリログ保存のための初期実装の課題
![Page 32: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/32.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
• Teradataに質問してみた。• ヤフーとTeradataで結んでいるCoDev契約の一環。
いわゆる、コンサルティング契約。
• Teradataからの回答でEventListenerを使った実装を提案された。
• EventListenerの詳細は割愛。
初期実装の課題を解決するために…
https://prestodb.io/docs/current/develop/event-listener.html
![Page 33: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/33.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
• EventListener InterfaceのqueryCompleted methodを実装
• QueryCompletedEventから各種統計情報を取り出し• 取得レコード数• 実行時間、etc
• jsonに変換しファイルに出力
一部カット
presto-auditの実装解説
![Page 34: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/34.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
• presto-auditでファイルに出力したログをfluentdで回収
• fluentdからObject Storageにアップロード
• (Future Work) • 利用状況の可視化• データ増加に伴うクエリの遅延検知• Workerのオートスケール
ヤフーでの利用例
![Page 35: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/35.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
githubで近日公開予定。
(ただいま、Teradataレビュー + 社内手続き中💦)
presto-audit 今後の予定
https://github.com/yahoojapan
![Page 36: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/36.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-adminの紹介
![Page 37: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/37.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-adminの紹介
• Teradataが開発した運用ツール• Python製運用ツールFabricのラッパー
• Presto周りの様々なオペレーションをカバー• Prestoサーバーの起動・停止• カタログの追加・削除• rpmパッケージのインストール• etc
presto-adminとは?
![Page 38: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/38.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-adminの紹介
Pros
• インストールが簡単 (ただし、2.x以降)
• Fabricの拡張なので学習コスト低め
Cons
• 一部機能がRedhat系OSのみでのサポート
• 複数クラスターの管理が不可
• 並列数の制御が不可 = クラスター全台を並列でオペレーション
開発者向け軽量管理ツールとしてGood
Presto-adminのPros/Cons
![Page 39: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/39.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-admin
1. pip経由でpresto-adminのインストール
2. config.jsonの作成
3. パッケージのインストール(jdk, presto本体, etc)
4. カタログの作成・追加
presto-adminのクイックスタート
![Page 40: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/40.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-admin
たったこれだけ! pipコマンド1発でインストール
$ pip install prestoadmin
1.pip経由でインストール
![Page 41: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/41.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-admin
$ cd $HOME/.prestoadmin/
$ vim config.json
$ cat config.json
{ "username": "yuokada", "coordinator": "coordinator.example.com","workers": ["worker[01-03].example.com”]
}
2. config.jsonの作成
注目
![Page 42: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/42.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
閑話休題: presto-admin
range format
• 2.2からの新機能
• workerノードで使える短縮記法
![Page 43: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/43.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
閑話休題: presto-admin
2.1以前の記法 2.2で使える記法
![Page 44: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/44.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-admin
• $ presto-admin package install /local/path/to/jdk.rpm
• # ローカルのPresto rpmパッケージをインストール$ presto-admin server install
/local/path/to/presto.rpm
• # 最新のPrestoをインストール$ presto-admin server install latest
3. jdk、Presto本体のインストール
![Page 45: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/45.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-admin
# hiveとの接続プロパティファイルを作成$ cd $HOME/.prestoadmin/catalog
$ vim myhive.properties
# myhiveのカタログをクラスター全台にインストール$ presto-admin catalog add myhive
$ presto-admin server restart
4. カタログファイルの追加
![Page 46: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/46.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
まとめ
• 社内の多種多様なストレージをつなぐため日々尽力
• prestoを始めるのは簡単• presto-adminと合わせてスタートするのがGood
• 運用者視点から見ると課題は多い• 利用方法を間違えなければスゴく良いプロダクト
Y!JでのPrestoはまだ始まったばかり
Let’s Play
![Page 47: 僕とヤフーと時々Teradata #prestodb](https://reader030.vdocuments.pub/reader030/viewer/2022021508/5a64fbcd7f8b9af5298b476b/html5/thumbnails/47.jpg)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
EOP
Thank you!