Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

僕とヤフーと時々Teradata #prestodb

989 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

僕とヤフーと時々Teradata #prestodb

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

×