• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Spark shark
 

Spark shark

on

  • 5,158 views

 

Statistics

Views

Total Views
5,158
Views on SlideShare
3,873
Embed Views
1,285

Actions

Likes
24
Downloads
48
Comments
0

7 Embeds 1,285

http://open-groove.net 1118
http://oza.hatenablog.com 121
https://twitter.com 37
http://localhost 3
http://b.hatena.ne.jp 2
http://translate.googleusercontent.com 2
http://www.google.co.jp 2
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Spark shark Spark shark Presentation Transcript

    • Spark/Shark @oza_x86 Tuesday, October 22, 13
    • ? Tuesday, October 22, 13
    • ? Tuesday, October 22, 13
    • Tuesday, October 22, 13
    • Tuesday, October 22, 13
    • おまえだれよ? Tsuyoshi Ozawa @oza_x86 OSS developer Apache Hadoop の開発をしてます github : oza ←の22章を書いたよ! Tuesday, October 22, 13
    • アジェンダ • Hadoop/MapReduce の復習 • Spark の概要 • Shark の概要 Tuesday, October 22, 13
    • • 分散処理基盤 • • たくさんの計算機を使って高速に処理 Open Source! Hadoop の構成 MapReduce 処理部 HDFS Tuesday, October 22, 13 1台辺りの構成 データ 保存部
    • • MapReduce が 提供するもの MapReduce • • • • • 処理の分散並列化 耐障害性 ジョブ監視のための基盤 開発者のための抽象化されたインタフェース (Map/Reduce) 引用元 • http://www.slideshare.net/shiumachi/impala-15324018 Tuesday, October 22, 13
    • MapReduce 概要 並列処理 集約処理 map reduce HDFS map HDFS reduce map 入力 読み込み Tuesday, October 22, 13 Shuffle 処理結果 書き込み
    • ところで... • HDFS ためたデータに対して, 機械学習を行い, 高度な解析を行うということが 色々な場所で行われている • Mahout (Hadoop 上のライブラリ) • Jubatus (オンライン学習基盤) Tuesday, October 22, 13
    • MapReduce の問題点 • • 機械学習のような繰り返し処理を行うようなものでは,性能が出ない なぜ? • リソース割り当てに起因する問題 • • プログラムの起動に 15 sec 程度かかる ディスク書き込みに起因する問題 • • HDFS への書き込みオーバヘッドが大きいため Shuffle でローカルディスクに書き出すため Spark の出番 Tuesday, October 22, 13
    • Spark とは? • 繰り返し処理を高速化するために HDFS に 特殊なキャッシュを乗っけた • 機械学習を書くために DSL を提供 • • • • Map/Reduce 以外にも色々と API が定義 されている DSL は勝手に分散処理される 実装をがんばっているため,起動に15secもかからない Apache Incubator • • Tuesday, October 22, 13 http://spark-project.org/ Scala で 20k
    • なぜキャッシュ? 並列処理 集約処理 map reduce HDFS map HDFS reduce map 入力 読み込み Tuesday, October 22, 13 Shuffle 処理結果 書き込み
    • なぜキャッシュ? 並列処理 集約処理 map reduce HDFS map HDFS reduce map 入力 読み込み Tuesday, October 22, 13 処理結果 書き込み
    • なぜ特殊なキャッシュ? • キャッシュは揮発性 →プロセスが落ちたら,再構築が必要 • 全体の処理をやり直す羽目に... Tuesday, October 22, 13
    • 100回の繰り返し処理を 考える 並列処理 集約処理 map reduce HDFS 99回 目 map reduce map Tuesday, October 22, 13 99回 目の 結果 HDFS
    • 100回の繰り返し処理を 考える 並列処理 集約処理 reduce HDFS 99回 目 map reduce map Tuesday, October 22, 13 99回 目の 結果 HDFS
    • 100回の繰り返し処理を 考える 並列処理 集約処理 reduce HDFS 99回 目 map reduce map キャッシュが壊 れる Tuesday, October 22, 13 99回 目の 結果 HDFS
    • 100回の繰り返し処理を 考える 並列処理 集約処理 map reduce map HDFS 99回 目 Tuesday, October 22, 13 reduce map 99回 目の 結果 HDFS
    • 100回の繰り返し処理を 考える 並列処理 集約処理 map reduce map HDFS 99回 目 reduce map 読み直して やり直し!! Tuesday, October 22, 13 99回 目の 結果 HDFS
    • 特殊なキャッシュ • Resillient Distributed Datasets • チェックポイントから処理の依存関係を見 て最小限で復帰する仕組み • ナイーブにキャッシュすると性能が出ない ので Java のオブジェクトをそのまま保存 • https://www.usenix.org/system/files/ conference/nsdi12/nsdi12final138.pdf Tuesday, October 22, 13
    • DSL file = spark.textFile("hdfs://...")   file.flatMap(line => line.split(" "))     .map(word => (word, 1))     .reduceByKey(_ + _) • http://spark-project.org/examples/ Tuesday, October 22, 13
    • 起動が速い • 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
    • Spark と MapReduce の比較 • Hadoop/MapReduce • ユーザは Map/Reduce という関数を 書く • チェックポイントは 勝手にとってくれる • Spark • ユーザは DSL を書く • チェックポイントは自分で取る 起動は1sec以内 お気軽に色々書ける...?? • 起動に15secくらいかかる • • お気軽に色々書ける • MapReduce HDFS Tuesday, October 22, 13 Spark (Spark の中にキャッシュ!!) HDFS
    • ベンチマーク結果 • 結構速い • https:// www.usenix.org/ system/files/ conference/ nsdi12/nsdi12final138.pdf Tuesday, October 22, 13
    • ? Tuesday, October 22, 13
    • ? Tuesday, October 22, 13
    • Apache Hive SQL っぽいものを書くと MapReduce プログラムにコンパイル Tuesday, October 22, 13
    • Spark DSL...? • 集計の度に file = spark.textFile("hdfs://...") • 厳しいのでは...?   file.flatMap(line => line.split(" "))     .map(word => (word, 1))     .reduceByKey(_ + _) Shark の出番 Tuesday, October 22, 13
    • 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
    • Shark のポイント • SQL を Spark の DSL にコンパイル • Apache Hive の Spark 版(フォーク) • 性能が出るようにキャッシュをうまく管理 • ストレージフォーマットを工夫 • キャッシュの置き場所を工夫 • Spark との親和性を重視 Tuesday, October 22, 13
    • もうちょっと詳しく • [2]Shark: SQL and Rich Analytics at Scale Tuesday, October 22, 13
    • Shark のベンチマーク selection query: SELECT pageURL, pageRank FROM rankings WHERE pageRank > X; 同条件のシンプルなクエリで速い理由 Spark の起動時間が高速 タスク割り当てが高速 Tuesday, October 22, 13
    • まとめ • 機械学習用の処理基盤 Spark • • 繰り返し処理にて Hadoop の最大100倍高速 Spark のSQLインタフェース Shark • • Tuesday, October 22, 13 キャッシュの速さと足回りの速さ, クエリの最適化により Hive の数倍高速 select のような基本的なクエリで Hive よりも高速に動作