僕とヤフーと時々Teradata #prestodb
-
Upload
yahoo -
Category
Technology
-
view
678 -
download
0
Transcript of 僕とヤフーと時々Teradata #prestodb
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ヤフー株式会社
岡田幸大
Presto
僕とヤフーと時々Teradata
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
自己紹介
• 岡田 幸大
• github - yuokada
• Like: #python, #golang
• 2009/04 ヤフー入社(新卒)
• 2016/10 クエリーエンジン・チーム〜現在
• Presto歴 半年とチョット
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
アジェンダ
• 会社紹介
• クラスター事例紹介
• Presto周りのツール・OSS紹介
• presto-audit
• presto-admin (おまけ)
• まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
サービス数は100以上
メディア、コマース、金融・決済など、幅広くサービスを展開
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
データのバラエティも100以上
検索キーワード、ビュー/クリック、コンテンツ、購買情報、など、多様なデータを活用可能
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
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Y!J is Multi Big Data Company
様々なストレージにあるデータをインタラクティブに分析する必要がある
そこで選ばれたのがPresto
これらのマルチビッグデータを活かすには?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
広告入稿系レポートシステム
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
あるところにこんなシステムがありました...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
• ユーザーの操作履歴をNFS上に保存
• ログファイルはPlain Text & 独自フォーマット• 3年間で約40TB(非圧縮)
• 集計・レポート生成処理はgrepベース
広告入稿システム - システムサマリー
重いレポートの出力にかかる時間: 80分
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース – その1
2016年某日、NFS管理チームからのお知らせ。「2017年9月でNFS退役させるからヨロシク」
EOSL宣言!そしてシステム刷新の気配!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
まずは、NFSの後継探し
ヤフー社内で開発・運用され実績もあるObject Storageを選定。
Object Storageの詳細はslideshareで。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
NFSのEOSL問題は解決した。だが、レポート出力が遅い問題が残っている。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
そこで出てきたのが
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
Prestoを採用するならファイルフォーマットも
カラムナフォーマットに変えよう!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
• 社内で実績があった• Hadoopクラスターで
採用済み• 社内のノウハウを活用
しやすい
ORCを選んだ理由
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
• ORC化前: 1ヶ月分のログで約770GB(非圧縮)• ORC化後: 1ヶ月分のログで約20GB
ORC化でファイルサイズが劇的に減少
圧縮率97%の驚異的なサイズダウン!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
ディレクトリ構成
旧システム(Before Presto)
アカウント毎の1階層
現行システム(After Presto)
日時とアカウントのハッシュ値による2階層
Object Storage上のファイル配置を見直し
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
旧システム 現行システム
ログの保存場所 NFS Object Storage
ログファイルのフォーマット
Plain text &独自フォーマット
ORCフォーマット
ディレクトリ構成 アカウント毎 日毎&アカウントのハッシュ値で分散
集計処理 grepベース Presto
大幅なモダン化を達成!!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース – その1
JobQueue
Frontend
Batch
Object Storage
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%の時間短縮!
レポート出力まで時間
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
ケース - その1
今回のシステム刷新はほぼ成功(自分視点)。ここまでするのにいろいろ苦労もありました。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今回のPresto導入で辛かったこと
• Javaに慣れてないと変換が辛い
• PrestoのINSERTでORCファイルを生成可能だがPrestoのリソースをSELECTに集中させたいので❎
ORCファイルへの変換が手間
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今回のPresto導入で辛かったこと
• クエリの条件次第でベストなディレクトリは違う• Ex. 月次レポート• Ex. アカウント毎のレポート
• どのクエリに対しても一定程度の時間で完了するディレクトリ構成を見つけるまでに時間を消費した
Object Storage上のディレクトリ構成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
今回のPresto導入で辛かったこと
• coordinatorが冗長化出来ない• 1クラスターに2台以上Coordinatorが登録出来ない• ダウンタイム・ゼロの運用は厳しい
• NW設計大事!!• NWトラフィックが凄く出る• DCまたいだトラフィックはダメ絶対!
他にも課題が沢山
細かい話は懇親会で。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
Presto周辺のツール・OSS紹介
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
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の課題
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
• SYSTEMコネクターでクエリ履歴を取得• 取得したクエリ情報をObject Storageに保存
クエリログ保存のための初期実装
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
1. ログ保存までにPrestoで再起動が発生すると取りこぼす
2. 実行頻度を上げるとシステムの負荷が上がる
クエリログ保存のための初期実装の課題
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
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の実装解説
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
• presto-auditでファイルに出力したログをfluentdで回収
• fluentdからObject Storageにアップロード
• (Future Work) • 利用状況の可視化• データ増加に伴うクエリの遅延検知• Workerのオートスケール
ヤフーでの利用例
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-auditの紹介
githubで近日公開予定。
(ただいま、Teradataレビュー + 社内手続き中💦)
presto-audit 今後の予定
https://github.com/yahoojapan
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-adminの紹介
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-adminの紹介
• Teradataが開発した運用ツール• Python製運用ツールFabricのラッパー
• Presto周りの様々なオペレーションをカバー• Prestoサーバーの起動・停止• カタログの追加・削除• rpmパッケージのインストール• etc
presto-adminとは?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-adminの紹介
Pros
• インストールが簡単 (ただし、2.x以降)
• Fabricの拡張なので学習コスト低め
Cons
• 一部機能がRedhat系OSのみでのサポート
• 複数クラスターの管理が不可
• 並列数の制御が不可 = クラスター全台を並列でオペレーション
開発者向け軽量管理ツールとしてGood
Presto-adminのPros/Cons
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のクイックスタート
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
presto-admin
たったこれだけ! pipコマンド1発でインストール
$ pip install prestoadmin
1.pip経由でインストール
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の作成
注目
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ノードで使える短縮記法
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で使える記法
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本体のインストール
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. カタログファイルの追加
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
まとめ
• 社内の多種多様なストレージをつなぐため日々尽力
• prestoを始めるのは簡単• presto-adminと合わせてスタートするのがGood
• 運用者視点から見ると課題は多い• 利用方法を間違えなければスゴく良いプロダクト
Y!JでのPrestoはまだ始まったばかり
Let’s Play
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .
EOP
Thank you!