SlideShare a Scribd company logo
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 よりも高速に動作

More Related Content

PDF
Hadoop Source Code Reading #17
PDF
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
PDF
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
PDF
SparkやBigQueryなどを用いた モバイルゲーム分析環境
PPTX
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
PDF
DB Tech showcase Tokyo 2015 Works Applications
 
PPTX
Kafkaを活用するためのストリーム処理の基本
PDF
最新版Hadoopクラスタを運用して得られたもの
Hadoop Source Code Reading #17
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
SparkやBigQueryなどを用いた モバイルゲーム分析環境
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
DB Tech showcase Tokyo 2015 Works Applications
 
Kafkaを活用するためのストリーム処理の基本
最新版Hadoopクラスタを運用して得られたもの

What's hot (20)

PDF
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
PDF
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
PDF
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
PPTX
EmbulkとDigdagとデータ分析基盤と
PDF
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
PDF
NetflixにおけるPresto/Spark活用事例
PPTX
Hive on Spark の設計指針を読んでみた
PDF
Sparkパフォーマンス検証
PDF
MapReduceプログラミング入門
PDF
ビッグじゃなくても使えるSpark Streaming
PDF
Hadoopを用いた大規模ログ解析
PPTX
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
PDF
Sparkストリーミング検証
PDF
Tez on EMRを試してみた
PDF
Sparkを用いたビッグデータ解析 〜 前編 〜
PDF
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
PDF
ゼロから始めるSparkSQL徹底活用!
PPTX
データ活用を効率化するHadoop WebUIと権限管理改善事例
PDF
20190314 PGStrom Arrow_Fdw
PDF
Apache Sparkについて
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
EmbulkとDigdagとデータ分析基盤と
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
NetflixにおけるPresto/Spark活用事例
Hive on Spark の設計指針を読んでみた
Sparkパフォーマンス検証
MapReduceプログラミング入門
ビッグじゃなくても使えるSpark Streaming
Hadoopを用いた大規模ログ解析
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Sparkストリーミング検証
Tez on EMRを試してみた
Sparkを用いたビッグデータ解析 〜 前編 〜
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
ゼロから始めるSparkSQL徹底活用!
データ活用を効率化するHadoop WebUIと権限管理改善事例
20190314 PGStrom Arrow_Fdw
Apache Sparkについて
Ad

Viewers also liked (8)

PDF
HiveとImpalaのおいしいとこ取り
PDF
Postgres.foreign.data.wrappers.2015
 
PDF
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
PDF
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
PDF
InfluxDB の概要 - sonots #tokyoinfluxdb
PDF
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
PPTX
Hive, Impala, and Spark, Oh My: SQL-on-Hadoop in Cloudera 5.5
PPTX
Hive on spark is blazing fast or is it final
HiveとImpalaのおいしいとこ取り
Postgres.foreign.data.wrappers.2015
 
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
InfluxDB の概要 - sonots #tokyoinfluxdb
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Hive, Impala, and Spark, Oh My: SQL-on-Hadoop in Cloudera 5.5
Hive on spark is blazing fast or is it final
Ad

Similar to Spark shark (20)

PDF
Hadoop事始め
PDF
20160127三木会 RDB経験者のためのspark
PPTX
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
PPTX
ゾウ使いへの第一歩
PDF
Hadoopとは
PPTX
Cloudera大阪セミナー 20130219
PDF
PySpark Intro Part.2 with SQL Graph
PDF
Presto As A Service - Treasure DataでのPresto運用事例
PDF
OSC2012 OSC.DB Hadoop
PPTX
Hadoopことはじめ
PPTX
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
PDF
MapReduce/YARNの仕組みを知る
PPT
Hadoop loves H2
PDF
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
PDF
HashiCorpのNomadを使ったコンテナのスケジューリング手法
PDF
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
PDF
Riak map reduce for beginners
PDF
OSC2012 Tokyo/Spring - Hadoop入門
PDF
第1回Hadoop関西勉強会参加レポート
PPTX
EmbulkとDigdagとデータ分析基盤と
Hadoop事始め
20160127三木会 RDB経験者のためのspark
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
ゾウ使いへの第一歩
Hadoopとは
Cloudera大阪セミナー 20130219
PySpark Intro Part.2 with SQL Graph
Presto As A Service - Treasure DataでのPresto運用事例
OSC2012 OSC.DB Hadoop
Hadoopことはじめ
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
MapReduce/YARNの仕組みを知る
Hadoop loves H2
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
HashiCorpのNomadを使ったコンテナのスケジューリング手法
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
Riak map reduce for beginners
OSC2012 Tokyo/Spring - Hadoop入門
第1回Hadoop関西勉強会参加レポート
EmbulkとDigdagとデータ分析基盤と

More from Tsuyoshi OZAWA (12)

PDF
YARN: a resource manager for analytic platform
PDF
Dynamic Resource Allocation Spark on YARN
PDF
Taming YARN @ Hadoop Conference Japan 2014
PDF
Taming YARN @ Hadoop conference Japan 2014
PDF
Fluent logger-scala
PDF
Multilevel aggregation for Hadoop/MapReduce
PDF
Memcached as a Service for CloudFoundry
KEY
First step for dynticks in FreeBSD
PDF
Memory Virtualization
PDF
第二回Bitvisor読書会 前半 Intel-VT について
PDF
第二回KVM読書会
PDF
Linux KVM のコードを追いかけてみよう
YARN: a resource manager for analytic platform
Dynamic Resource Allocation Spark on YARN
Taming YARN @ Hadoop Conference Japan 2014
Taming YARN @ Hadoop conference Japan 2014
Fluent logger-scala
Multilevel aggregation for Hadoop/MapReduce
Memcached as a Service for CloudFoundry
First step for dynticks in FreeBSD
Memory Virtualization
第二回Bitvisor読書会 前半 Intel-VT について
第二回KVM読書会
Linux KVM のコードを追いかけてみよう

Spark shark