Your SlideShare is downloading. ×
0
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Spark shark
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Spark shark

6,232

Published on

0 Comments
29 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,232
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
67
Comments
0
Likes
29
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Spark/Shark @oza_x86 Tuesday, October 22, 13
  • 2. ? Tuesday, October 22, 13
  • 3. ? Tuesday, October 22, 13
  • 4. Tuesday, October 22, 13
  • 5. Tuesday, October 22, 13
  • 6. おまえだれよ? Tsuyoshi Ozawa @oza_x86 OSS developer Apache Hadoop の開発をしてます github : oza ←の22章を書いたよ! Tuesday, October 22, 13
  • 7. アジェンダ • Hadoop/MapReduce の復習 • Spark の概要 • Shark の概要 Tuesday, October 22, 13
  • 8. • 分散処理基盤 • • たくさんの計算機を使って高速に処理 Open Source! Hadoop の構成 MapReduce 処理部 HDFS Tuesday, October 22, 13 1台辺りの構成 データ 保存部
  • 9. • MapReduce が 提供するもの MapReduce • • • • • 処理の分散並列化 耐障害性 ジョブ監視のための基盤 開発者のための抽象化されたインタフェース (Map/Reduce) 引用元 • http://www.slideshare.net/shiumachi/impala-15324018 Tuesday, October 22, 13
  • 10. MapReduce 概要 並列処理 集約処理 map reduce HDFS map HDFS reduce map 入力 読み込み Tuesday, October 22, 13 Shuffle 処理結果 書き込み
  • 11. ところで... • HDFS ためたデータに対して, 機械学習を行い, 高度な解析を行うということが 色々な場所で行われている • Mahout (Hadoop 上のライブラリ) • Jubatus (オンライン学習基盤) Tuesday, October 22, 13
  • 12. MapReduce の問題点 • • 機械学習のような繰り返し処理を行うようなものでは,性能が出ない なぜ? • リソース割り当てに起因する問題 • • プログラムの起動に 15 sec 程度かかる ディスク書き込みに起因する問題 • • HDFS への書き込みオーバヘッドが大きいため Shuffle でローカルディスクに書き出すため Spark の出番 Tuesday, October 22, 13
  • 13. Spark とは? • 繰り返し処理を高速化するために HDFS に 特殊なキャッシュを乗っけた • 機械学習を書くために DSL を提供 • • • • Map/Reduce 以外にも色々と API が定義 されている DSL は勝手に分散処理される 実装をがんばっているため,起動に15secもかからない Apache Incubator • • Tuesday, October 22, 13 http://spark-project.org/ Scala で 20k
  • 14. なぜキャッシュ? 並列処理 集約処理 map reduce HDFS map HDFS reduce map 入力 読み込み Tuesday, October 22, 13 Shuffle 処理結果 書き込み
  • 15. なぜキャッシュ? 並列処理 集約処理 map reduce HDFS map HDFS reduce map 入力 読み込み Tuesday, October 22, 13 処理結果 書き込み
  • 16. なぜ特殊なキャッシュ? • キャッシュは揮発性 →プロセスが落ちたら,再構築が必要 • 全体の処理をやり直す羽目に... Tuesday, October 22, 13
  • 17. 100回の繰り返し処理を 考える 並列処理 集約処理 map reduce HDFS 99回 目 map reduce map Tuesday, October 22, 13 99回 目の 結果 HDFS
  • 18. 100回の繰り返し処理を 考える 並列処理 集約処理 reduce HDFS 99回 目 map reduce map Tuesday, October 22, 13 99回 目の 結果 HDFS
  • 19. 100回の繰り返し処理を 考える 並列処理 集約処理 reduce HDFS 99回 目 map reduce map キャッシュが壊 れる Tuesday, October 22, 13 99回 目の 結果 HDFS
  • 20. 100回の繰り返し処理を 考える 並列処理 集約処理 map reduce map HDFS 99回 目 Tuesday, October 22, 13 reduce map 99回 目の 結果 HDFS
  • 21. 100回の繰り返し処理を 考える 並列処理 集約処理 map reduce map HDFS 99回 目 reduce map 読み直して やり直し!! Tuesday, October 22, 13 99回 目の 結果 HDFS
  • 22. 特殊なキャッシュ • Resillient Distributed Datasets • チェックポイントから処理の依存関係を見 て最小限で復帰する仕組み • ナイーブにキャッシュすると性能が出ない ので Java のオブジェクトをそのまま保存 • https://www.usenix.org/system/files/ conference/nsdi12/nsdi12final138.pdf Tuesday, October 22, 13
  • 23. DSL file = spark.textFile("hdfs://...")   file.flatMap(line => line.split(" "))     .map(word => (word, 1))     .reduceByKey(_ + _) • http://spark-project.org/examples/ Tuesday, October 22, 13
  • 24. 起動が速い • 1秒以内で立ち上がる • 仕組み • Spark avoids this problem by using a fast event-driven RPC library to launch tasks and by reusing its worker processes. It can launch thousands of tasks per second with only about 5 ms of over- head per task, making task lengths of 50–100 ms and MapReduce jobs of 500 ms viable. What surprised us is how much this affected query performance, even in large (multi-minute) queries[2]. • 意訳: 実装がんばったら,5msec で 1タスク立ち上がるように なったよ • Tuesday, October 22, 13 [2]Shark: SQL and Rich Analytics at Scale
  • 25. Spark と MapReduce の比較 • Hadoop/MapReduce • ユーザは Map/Reduce という関数を 書く • チェックポイントは 勝手にとってくれる • Spark • ユーザは DSL を書く • チェックポイントは自分で取る 起動は1sec以内 お気軽に色々書ける...?? • 起動に15secくらいかかる • • お気軽に色々書ける • MapReduce HDFS Tuesday, October 22, 13 Spark (Spark の中にキャッシュ!!) HDFS
  • 26. ベンチマーク結果 • 結構速い • https:// www.usenix.org/ system/files/ conference/ nsdi12/nsdi12final138.pdf Tuesday, October 22, 13
  • 27. ? Tuesday, October 22, 13
  • 28. ? Tuesday, October 22, 13
  • 29. Apache Hive SQL っぽいものを書くと MapReduce プログラムにコンパイル Tuesday, October 22, 13
  • 30. Spark DSL...? • 集計の度に file = spark.textFile("hdfs://...") • 厳しいのでは...?   file.flatMap(line => line.split(" "))     .map(word => (word, 1))     .reduceByKey(_ + _) Shark の出番 Tuesday, October 22, 13
  • 31. Shark とは? • Spark 上で SQL はじめました CREATE TABLE logs_last_month_cached AS SELECT * FROM logs WHERE time > date(...); SELECT page, count(*) c FROM logs_last_month_cached GROUP BY page ORDER BY c DESC LIMIT 10; Shark(SQL) Spark HDFS Tuesday, October 22, 13
  • 32. Shark のポイント • SQL を Spark の DSL にコンパイル • Apache Hive の Spark 版(フォーク) • 性能が出るようにキャッシュをうまく管理 • ストレージフォーマットを工夫 • キャッシュの置き場所を工夫 • Spark との親和性を重視 Tuesday, October 22, 13
  • 33. もうちょっと詳しく • [2]Shark: SQL and Rich Analytics at Scale Tuesday, October 22, 13
  • 34. Shark のベンチマーク selection query: SELECT pageURL, pageRank FROM rankings WHERE pageRank > X; 同条件のシンプルなクエリで速い理由 Spark の起動時間が高速 タスク割り当てが高速 Tuesday, October 22, 13
  • 35. まとめ • 機械学習用の処理基盤 Spark • • 繰り返し処理にて Hadoop の最大100倍高速 Spark のSQLインタフェース Shark • • Tuesday, October 22, 13 キャッシュの速さと足回りの速さ, クエリの最適化により Hive の数倍高速 select のような基本的なクエリで Hive よりも高速に動作

×