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.

20140120 presto meetup

1,107 views

Published on

2015/1/20 株式会社フリークアウトで行われたPresto Meetupの発表資料

Published in: Technology
  • Be the first to comment

20140120 presto meetup

  1. 1. Prestoの利用事例と 性能測定結果 Hironori Ogibayashi Shin Matsuura
  2. 2. 自己紹介 ● 荻林 裕憲(@angostura11) ● 松浦 晋 ○ 通信会社の社内システム基盤部門勤務 ○ ミドルウェアを中心に、検証、設計、構築等 をやってます
  3. 3. 今日話すこと ● Prestoの利用事例 ○ システム構成 ○ 用途 ○ 困ったこと/トラブル事例 ○ 今後の課題 ● Hive+Tez/Prestoの性能比較
  4. 4. Prestoの利用事例
  5. 5. ログ収集・蓄積の流れ Fluentd Aggregator Hadoop Cluster Application WebHDFS ■規模感 ・1500 Fluentdインスタンス ・25,000 msg / sec ・400GB / day ・150 types of log
  6. 6. ログの用途 ● 基盤部門が自分たちのために ○ サーバ利用状況の確認 ○ Oracle DB性能分析ツール ● システム開発部門による分析 ○ システム・業務改善のため
  7. 7. ログの利用例
  8. 8. Why Presto? ● インタラクティブ/ad-hocな使い方が多い ● 当然、速い方が嬉しい
  9. 9. Hadoop Slave Prestoの構成 Hadoop Slave DataNode TaskTracker Presto Worker Presto Coordinator Hive Metastore Application/Client ・・・ ● Coordinatorは専用物理サーバ ● WorkerはHadoop Slaveと相乗り ● HDFS上のログは定期的にRCFileへ ● バージョンの推移 ○ 0.66⇒0.73⇒0.75⇒0.82
  10. 10. 導入効果 〜あるクエリの実行時間〜 230秒 7秒 ・アプリケーションから発行され るクエリの一つをCLIから実行 し、時間を測定 ・CDH4(MRv1)のクラスタ上で 実行.
  11. 11. 構築・運用 ● 構築 ○ RPM化してAnsibleで展開 ○ 配置+設定ファイル書き換えだけなので簡単 ● 運用で使っているもの ○ クエリ実行履歴 ■ コーディネータのWeb UI ○ ログ ■ /var/presto/data/logs/{server.log,launcher.log} ○ メトリック ■ presto-metrics(https://github.com/xerial/presto- metrics)⇒Fluentd⇒Elasticsearch + Kibana ○ sysスキーマ
  12. 12. 困ったこと・トラブル事例 ● Workerが落ちる、固まる ○ OutOfMemory. 固まった時は、kill -9 しかない ○ task.shard.max-threads×task.max-memoryが-Xmx 以下となるように調整 ● node-scheduler.include-coordinator=trueにしてた頃 は、CoordinatorがWorkerと一緒に落ちてた ● HiveQLとの違い ○ アプリケーション側でHiveQL/Presto(ANSI SQL)両パターンのク エリを用意
  13. 13. 今後の課題 ● Coordinator SPOFの対応 ● セキュリティ ○ 全てPresto実行ユーザの権限になってしまう ● Hadoop Clusterとの間のリソース制御
  14. 14. Presto VS Hive+Tez
  15. 15. やったこと クエリパフォーマンス観点での、 Presto VS Hive+Tez
  16. 16. 結論 Presto VS Hive+Tez Win Lose
  17. 17. どれくらい? Presto VS Hive+Tez 2.0~136倍
  18. 18. 詳しく
  19. 19. テスト環境 2p12c 64GB Mem 36TB Disk NN DN DN DN Hadoop(HDP2.1) Presto(0.82) Coodinator Worker Worker Worker Master : 3nodes Slave : 3nodes NN Metastore
  20. 20. テストデータ 300GB csv file 50 columns 1.1B records
  21. 21. パフォーマンス測定の軸 • クエリの種類 • データの格納形式 • 繰り返し
  22. 22. クエリの種類
  23. 23. 測定したクエリ Query1: select count(*) from TestTBL Query2: select * from TestTBL where col1 = ‘XXX’ Query3: select * from TestTBL where col1 = ‘XXX’ and col2 = ‘YYY’ Query4: select col1, count(*) from TestTBL group by col1 Query5: select col1, count(*) from TestTBL where col2 = ‘YYY’ group by col1
  24. 24. ※格納形式:Txt クエリの種類観点での比較
  25. 25. ※格納形式:Txt クエリの種類観点での比較 すべてのクエリにおいてPrestoの方が速い 136倍速
  26. 26. データ格納形式
  27. 27. 測定した格納形式 • Text File (Textfile) • Record Columnar File (RCfile) • Optimized Row Columnar File (ORCfile)
  28. 28. データ格納形式観点での比較 ※クエリ:Query2
  29. 29. データ格納形式観点での比較 ※クエリ:Query2 すべてのデータ格納形式において Prestoの方が速い
  30. 30. 繰り返し
  31. 31. 繰り返しでの処理時間変化(Presto) ※クエリ:Query2 ※格納形式:Txt
  32. 32. 繰り返しでの処理時間変化(Presto) ※クエリ:Query2 ※格納形式:Txt 2回目以降高速!キャッシュ?? 2.5倍速
  33. 33. 繰り返しでの処理時間変化(Hive+Tez) ※クエリ:Query2 ※格納形式:Txt
  34. 34. 繰り返しでの処理時間変化(Hive+Tez) ※クエリ:Query2 ※格納形式:Txt 繰り返しによる効果は特にみられない
  35. 35.
  36. 36. Engine:Presto データ格納形式とクエリの得手不得手
  37. 37. Engine:Presto データ格納形式とクエリの得手不得手 RCfileが一番振れ幅が小さく速い??
  38. 38. まとめ 結果 ● クエリの種類を問わず、Prestoの方が高速 ● データの格納形式を問わず、Prestoの方が高速 ● Prestoは繰り返し処理を行うと高速化する ● PrestoはRCファイルを用いた場合に、最も安定的に高速処 理ができる 今後やりたいこと ● ノードスケール、データ量観点での測定 ● ORCファイルの圧縮機能を使用しての測定 ● HDP2.2で同様のテスト
  39. 39. Appendix
  40. 40. ほぼすべての条件で 2回目以降高速

×