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