SlideShare a Scribd company logo
1 of 27
Download to read offline
Copyright © BrainPad Inc. All Rights Reserved.
Apache Sparkについて
2015年5月15日
Copyright © BrainPad Inc. All Rights Reserved.
1. Sparkとは
2
Copyright © BrainPad Inc. All Rights Reserved.
公式ドキュメントによると、
Apache Spark is a fast and general-purpose cluster computing system.
そのまま訳すと、「高速」と「多目的」を特徴とした分散処理システム。
MapReduceに比べて、10倍~100倍程度のパフォーマンスが出ると言われている。
 略歴
– 2009年からUC Berkleyで開発が始められる。
– 2010年にオープンソース化。
– 2013年にASFに寄贈される。
– 2014年にApache Top-Level Projectに昇格。
現在(2015/5/1時点)での最新バージョンは1.3.1。実装言語はScalaで、
Scala,Java,Pythonで使用可能。
3
Sparkとは
Copyright © BrainPad Inc. All Rights Reserved.
 インメモリによる処理
– SparkはMapReduceとは異なりオンメモリでデータ処理をするため、mapやfilterなど
の処理ごとに毎回ディスクIOが発生することはない。
 RDD
– 各ノードに分散して処理されるデータコレクションの抽象表現。
– Sparkでは、RDDに対してmapやreduceなどの処理を実行する。
– HDFSへの出力など、実際にデータが必要になるまで処理は遅延される。アクションが
起こった時に、処理の流れをたどって実際にデータロードやmapなどの処理を行う。
– RDDをメモリ上にキャッシュできるので、効率的に繰り返し処理が可能。
4
高速?
Copyright © BrainPad Inc. All Rights Reserved.
Sparkは、Spark Coreを中心としたいくつかのサブコンポーネントから成り立って
いる。
例えば、
– Spark SQL(構造化データに対して、SQLを使ってアクセス)
– Spark Streaming(Spark上でストリーミングデータを処理)
– MLlib(Spark上で機械学習)
– GraphX(グラフデータを処理)
すべてSpark Coreをベースとしているため、コードの再利用や学習コストの低下、
メンテナンス容易性の向上が期待できる。
5
多目的?
Copyright © BrainPad Inc. All Rights Reserved.
SparkはBDAS(Berkeley Data Analytics Stack)の一部。
BDASとは、AMPlabで開発されている一連のデータ処理ソフトウェアスタック。
最近よく名前を聞くMesosなんかもここに含まれている。
6
多目的?
Copyright © BrainPad Inc. All Rights Reserved.
2. RDD
7
Copyright © BrainPad Inc. All Rights Reserved.
各ノードに分散して保持されるデータコレクションオブジェクト。
Sparkでは、このRDDを通じてデータの処理フローを定義していく。
RDDは、以下の性質を持つ。
 パーティションによる分散
– データは複数のパーティションに分けられ、それぞれがクラスタ上に分散して処理され
る。
 遅延実行
– countやsaveAsTextFileなど、特定の操作が実行されるタイミングまですべての処理が
遅延される。
 障害耐性
– RDDはイミュータブルで、データの途中経過を逐一保持しない。
– データがロストした場合は、RDDを再計算することでデータを復旧する。
• ミュータブルなデータをオンメモリで保持する場合、更新のたびにレプリケーションを取る必
要があるが、この方法はネットワークへの負荷が重い。
8
RDDとは
Copyright © BrainPad Inc. All Rights Reserved.
RDDを作り出す方法は2種類ある。
1. コレクションオブジェクトから作成する。
val data = Array(1, 2, 3, 4, 5)
val distData = sc.parallelize(data)
2. 外部データソースから作成する。
val distFile = sc.textFile("data.txt")
9
RDDの作成方法
Copyright © BrainPad Inc. All Rights Reserved.
1. Transformation
既存のRDDから、変換処理などを通じて新しいRDDを作り出す処理。実行はActionが実行
されるまで遅延される。
例:map、filter、groupByKey
2. Action
Driverにデータを戻したり、外部にデータを書き込んだりする処理。Actionが実行された
タイミングで、それまで遅延されていた処理が実行される。
例:count、take、saveAsTextFile
10
RDDのインターフェース
Copyright © BrainPad Inc. All Rights Reserved.
 RDDは主に以下のデータを保持する。
– 親RDDの参照
– 担当するパーティション
• 例えばHDFSからファイルを読み込んでRDDを作った場合、そのファイルのブロックごとに
パーティションが作られる。RDDは、このパーティションの集合と、それぞれのメタデータ
(どこに配置されているかとか)を保持する。
 Transformationごとに、新たなRDDオブジェクトが作成される。
11
RDDの構造
RDD RDD RDD
transformationにより生成 transformationにより生成
参照を保持参照を保持
Copyright © BrainPad Inc. All Rights Reserved.
// 1.HDFSからデータロード
val lines = sc.textFile(“hdfs://…”)
// 2.”target”という単語を含む行に絞込
val targetLines = lines.filter(_.contains(“target”))
// 3.先頭の単語を集める
val firstWords = targetLines.map(_.split(“ “)(0))
// 4.HDFSに書き出す
firstWords.saveAsTextFile(“hdfs://…”)
12
RDD処理イメージ
上記のような処理の場合、4のActionが実行されるまではどの処理も実行されない。
Copyright © BrainPad Inc. All Rights Reserved.
// 前ページの処理続き
firstWords.saveAsTextFile(“hdfs://…”)
println(firstWords.count())
13
RDDのキャッシュ
上記は、firstWordsに対してアクションが2度実行されている。Sparkは通常、アク
ションの時にすべてを再計算するのでこのようなケースでは非効率となる。
そこで、キャッシュをする。
firstWords.cache()
firstWords.saveAsTextFile(“hdfs://…”)
println(firstWords.count())
firstWordsの途中経過が一旦メモリ上に保持され、続く2つのアクションはこの
キャッシュを使うようになり効率的に。
Copyright © BrainPad Inc. All Rights Reserved. 14
RDDのキャッシュ
filter map saveAsTextFileHDFS
filter map countHDFS
 キャッシュしない場合、全く同じ処理が2度行われる。
• HDFSからの読み込みも2回発生し、処理の間に読み込み対象が変
われば読み込む内容も変わる。
filter map saveAsTextFileHDFS
count
 キャッシュする場合、map処理までが省かれる。
cache
Copyright © BrainPad Inc. All Rights Reserved.
3. 実行モデルとスケジューリング
15
Copyright © BrainPad Inc. All Rights Reserved. 16
Sparkの実行モデル
Driver
Executor
 Driver
– ユーザープログラムをtaskに変換し、
executorに実行を命令する。
– Actionに伴いexecutorからデータを取得する。
– ユーザープログラムのmainメソッドを実行す
るJVMプロセス。driverが終了すると、Spark
アプリケーション自体が終了する。
 Executor
– driverから命令されたtaskを実行する。
– RDDのキャッシュを保持する。
– Spark起動時に起動されるJVMプロセス。
※実際には、YARNやMesosなどのクラスタマネージャ上で動作
するので、それによって実行モデルは若干異なります。
Executor
Executor
Copyright © BrainPad Inc. All Rights Reserved.
1. ユーザープログラムが、transformationを組み合わせてRDDの参照グラフを作
成する。
2. ユーザープログラムが、actionを実行する。
3. Driverが、RDDの参照グラフからStageのDAG(有向グラフ)を作成する。
– Stage
• 複数のTaskの集合。
• Shuffle(後述)が必要となるポイントでStageを分ける。
• 同じパーティションに対する処理が連続している場合、マージすることで最適化する。
– Task
• executorの実行する処理の最小単位。1パーティションごとに作成される。
4. Executorに各Stageの処理を命令する。
17
Driverによる実行計画作成
Copyright © BrainPad Inc. All Rights Reserved.
 Shuffle
– reduceByKey等により複数のパーティションを1つにまとめるため、データをある
executorから別のexecutorに転送する処理。
– 処理がローカルで済まなくなるため、パフォーマンス上のボトルネックになりやすい。
18
Shuffle
RDD
RDD
RDD
RDD
RDD
RDD
RDD
RDD
RDD
RDD
RDD
RDD
同じパーティションに閉じた処理ならシャッフルは
不要(mapなど)
別パーティションが必要になる処理では、
シャッフルが生じる。
Copyright © BrainPad Inc. All Rights Reserved.
 Stageは、Shuffleを境界として分断
される。
– このケースではjoinがShuffleを起こし
ている。
 同じパーティションに対する処理が連
続する場合、処理は1つのステージに
マージされる。(※)
– Stage1はmapとfilterの2つの処理があ
るが、実際にはmapとfilterを合成した
1つのStageに変換されている。
– これは“pipelining”と呼ばれる。
– Stageは複数のtaskで構成されており、
それぞれがexecutorで処理される。
※厳密には、親RDDが1つの子RDDからのみし
か参照されていない場合。(複数パーティション
をマージするunionもこれに該当する)
19
Stageの分割例
map filter
map
join
Stage1
Stage2
Stage3
Copyright © BrainPad Inc. All Rights Reserved.
4. その他の主要なSparkコンポーネント
20
Copyright © BrainPad Inc. All Rights Reserved.
 Sparkで、ストリーミング処理を行うためのコンポーネント。
 データは、一定間隔ごとにRDDとしてまとめられて処理される。
– このRDDのまとまりをDStreamと呼ぶ。
– Spark Streamingは一定間隔ごとにまとめられたRDDに対して処理を書くことになる
ので、書き方は通常のSparkプログラミングとほぼ変わらない。(マイクロバッチ)
21
Spark Streaming
ストリーミングデータ
RDD RDD RDD
5秒
例:5秒間隔ごとにストリーミングデータを処理する場合
5秒 5秒
DSteam
Copyright © BrainPad Inc. All Rights Reserved.
 Spark SQL
– 構造化されたRDD(SchemaRDD)に対してSQLで処理を記述するためのコンポーネ
ント。
– JSONやParquet、Hiveなどの様々なデータソースに対応。
 DataFrame
– RやPandas(Python)ライクなデータ操作が可能なコンポーネント。
– Spark1.3で追加された。
 Catalyst
– Spark SQLやDataFrameのコードを最適化するオプティマイザ(内部的に使用されて
いる)。
– 詳細についてはdatabricksのブログを参考。
• https://databricks.com/blog/2015/04/13/deep-dive-into-spark-sqls-catalyst-
optimizer.html
22
Spark SQL、DataFrame
Copyright © BrainPad Inc. All Rights Reserved.
 Sparkで機械学習を行うためのコンポーネント
 用意されているアルゴリズム例
– SVM
– ロジスティック回帰
– 決定木
– K-means
– ALS
– などなど。
 Spark Streamingと組み合わせて使うオンライン学習機もあり。
– Streaming K-meansとか。
23
MLlib
Copyright © BrainPad Inc. All Rights Reserved.
5. まとめ
24
Copyright © BrainPad Inc. All Rights Reserved.
 Sparkは、インメモリ処理による高速化と、Spark Coreをベースとした多目的な
コンポーネントを持つ分散処理ソフトウェア。
 Scala,Java,PythonでSparkアプリケーションを記述可能。
– spark shellで気軽に試せるのが良い。
 Spark上で扱うデータはRDDとして抽象化され、処理は遅延実行される。
 Spark StreamingやMLlibなど、様々なコンポーネントがあり、互いに組み合わ
せて使えるためメンテナンス性が高く総合的な学習コストも低い。
 Learning SparkやAdvanced Analytics with Sparkが発売されるなど、情報も
揃ってきた感じ。
– 日本語情報も最近は増えてきた雰囲気がある。
– 今年のStrataはSpark関連のセッションが非常に多かったという話も。
25
まとめ
Copyright © BrainPad Inc. All Rights Reserved.
 Spark公式ドキュメント
– https://spark.apache.org/docs/latest/index.html
 Learning Spark
– http://shop.oreilly.com/product/0636920028512.do
 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory
Cluster Computing
– https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf
26
参考
Copyright © BrainPad Inc. All Rights Reserved.
株式会社ブレインパッド
〒108-0071 東京都港区白金台3-2-10 白金台ビル3F
TEL:03-6721-7001
FAX:03-6721-7010
info@brainpad.co.jp
Copyright © BrainPad Inc. All Rights Reserved.
www.brainpad.co.jp

More Related Content

What's hot

PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...Holden Karau
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsYoshiyasu SAEKI
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用cyberagent
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)NTT DATA Technology & Innovation
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみたKumano Ryo
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...NTT DATA Technology & Innovation
 
Planet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamPlanet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamSATOSHI TAGOMORI
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
 

What's hot (20)

PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once Semantics
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
Apache Spark + Arrow
Apache Spark + ArrowApache Spark + Arrow
Apache Spark + Arrow
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
 
Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Apache Sparkのご紹介 (後半:技術トピック)
Apache Sparkのご紹介 (後半:技術トピック)Apache Sparkのご紹介 (後半:技術トピック)
Apache Sparkのご紹介 (後半:技術トピック)
 
元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
 
Planet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamPlanet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: Bigdam
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 

Similar to Apache Sparkについて

Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015Cloudera Japan
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜x1 ichi
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingchibochibo
 
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~decode2016
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisitedUptime Technologies LLC (JP)
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...DataWorks Summit/Hadoop Summit
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?Oda Shinsuke
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...NTT DATA Technology & Innovation
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)NTT DATA Technology & Innovation
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Kenichi Sonoda
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 

Similar to Apache Sparkについて (20)

Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
 
Survey of Apache Spark
Survey of Apache SparkSurvey of Apache Spark
Survey of Apache Spark
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
 
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATAApache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
 
Spark CL
Spark CLSpark CL
Spark CL
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
SparkTokyo2019NovIshizaki
SparkTokyo2019NovIshizakiSparkTokyo2019NovIshizaki
SparkTokyo2019NovIshizaki
 

More from BrainPad Inc.

Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...BrainPad Inc.
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルトBrainPad Inc.
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介BrainPad Inc.
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 BrainPad Inc.
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術BrainPad Inc.
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事BrainPad Inc.
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシBrainPad Inc.
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-BrainPad Inc.
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料BrainPad Inc.
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIBrainPad Inc.
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)BrainPad Inc.
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善BrainPad Inc.
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発BrainPad Inc.
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例BrainPad Inc.
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年BrainPad Inc.
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発BrainPad Inc.
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?BrainPad Inc.
 

More from BrainPad Inc. (20)

Oss LT会_20210203
Oss LT会_20210203Oss LT会_20210203
Oss LT会_20210203
 
Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
 

Apache Sparkについて

  • 1. Copyright © BrainPad Inc. All Rights Reserved. Apache Sparkについて 2015年5月15日
  • 2. Copyright © BrainPad Inc. All Rights Reserved. 1. Sparkとは 2
  • 3. Copyright © BrainPad Inc. All Rights Reserved. 公式ドキュメントによると、 Apache Spark is a fast and general-purpose cluster computing system. そのまま訳すと、「高速」と「多目的」を特徴とした分散処理システム。 MapReduceに比べて、10倍~100倍程度のパフォーマンスが出ると言われている。  略歴 – 2009年からUC Berkleyで開発が始められる。 – 2010年にオープンソース化。 – 2013年にASFに寄贈される。 – 2014年にApache Top-Level Projectに昇格。 現在(2015/5/1時点)での最新バージョンは1.3.1。実装言語はScalaで、 Scala,Java,Pythonで使用可能。 3 Sparkとは
  • 4. Copyright © BrainPad Inc. All Rights Reserved.  インメモリによる処理 – SparkはMapReduceとは異なりオンメモリでデータ処理をするため、mapやfilterなど の処理ごとに毎回ディスクIOが発生することはない。  RDD – 各ノードに分散して処理されるデータコレクションの抽象表現。 – Sparkでは、RDDに対してmapやreduceなどの処理を実行する。 – HDFSへの出力など、実際にデータが必要になるまで処理は遅延される。アクションが 起こった時に、処理の流れをたどって実際にデータロードやmapなどの処理を行う。 – RDDをメモリ上にキャッシュできるので、効率的に繰り返し処理が可能。 4 高速?
  • 5. Copyright © BrainPad Inc. All Rights Reserved. Sparkは、Spark Coreを中心としたいくつかのサブコンポーネントから成り立って いる。 例えば、 – Spark SQL(構造化データに対して、SQLを使ってアクセス) – Spark Streaming(Spark上でストリーミングデータを処理) – MLlib(Spark上で機械学習) – GraphX(グラフデータを処理) すべてSpark Coreをベースとしているため、コードの再利用や学習コストの低下、 メンテナンス容易性の向上が期待できる。 5 多目的?
  • 6. Copyright © BrainPad Inc. All Rights Reserved. SparkはBDAS(Berkeley Data Analytics Stack)の一部。 BDASとは、AMPlabで開発されている一連のデータ処理ソフトウェアスタック。 最近よく名前を聞くMesosなんかもここに含まれている。 6 多目的?
  • 7. Copyright © BrainPad Inc. All Rights Reserved. 2. RDD 7
  • 8. Copyright © BrainPad Inc. All Rights Reserved. 各ノードに分散して保持されるデータコレクションオブジェクト。 Sparkでは、このRDDを通じてデータの処理フローを定義していく。 RDDは、以下の性質を持つ。  パーティションによる分散 – データは複数のパーティションに分けられ、それぞれがクラスタ上に分散して処理され る。  遅延実行 – countやsaveAsTextFileなど、特定の操作が実行されるタイミングまですべての処理が 遅延される。  障害耐性 – RDDはイミュータブルで、データの途中経過を逐一保持しない。 – データがロストした場合は、RDDを再計算することでデータを復旧する。 • ミュータブルなデータをオンメモリで保持する場合、更新のたびにレプリケーションを取る必 要があるが、この方法はネットワークへの負荷が重い。 8 RDDとは
  • 9. Copyright © BrainPad Inc. All Rights Reserved. RDDを作り出す方法は2種類ある。 1. コレクションオブジェクトから作成する。 val data = Array(1, 2, 3, 4, 5) val distData = sc.parallelize(data) 2. 外部データソースから作成する。 val distFile = sc.textFile("data.txt") 9 RDDの作成方法
  • 10. Copyright © BrainPad Inc. All Rights Reserved. 1. Transformation 既存のRDDから、変換処理などを通じて新しいRDDを作り出す処理。実行はActionが実行 されるまで遅延される。 例:map、filter、groupByKey 2. Action Driverにデータを戻したり、外部にデータを書き込んだりする処理。Actionが実行された タイミングで、それまで遅延されていた処理が実行される。 例:count、take、saveAsTextFile 10 RDDのインターフェース
  • 11. Copyright © BrainPad Inc. All Rights Reserved.  RDDは主に以下のデータを保持する。 – 親RDDの参照 – 担当するパーティション • 例えばHDFSからファイルを読み込んでRDDを作った場合、そのファイルのブロックごとに パーティションが作られる。RDDは、このパーティションの集合と、それぞれのメタデータ (どこに配置されているかとか)を保持する。  Transformationごとに、新たなRDDオブジェクトが作成される。 11 RDDの構造 RDD RDD RDD transformationにより生成 transformationにより生成 参照を保持参照を保持
  • 12. Copyright © BrainPad Inc. All Rights Reserved. // 1.HDFSからデータロード val lines = sc.textFile(“hdfs://…”) // 2.”target”という単語を含む行に絞込 val targetLines = lines.filter(_.contains(“target”)) // 3.先頭の単語を集める val firstWords = targetLines.map(_.split(“ “)(0)) // 4.HDFSに書き出す firstWords.saveAsTextFile(“hdfs://…”) 12 RDD処理イメージ 上記のような処理の場合、4のActionが実行されるまではどの処理も実行されない。
  • 13. Copyright © BrainPad Inc. All Rights Reserved. // 前ページの処理続き firstWords.saveAsTextFile(“hdfs://…”) println(firstWords.count()) 13 RDDのキャッシュ 上記は、firstWordsに対してアクションが2度実行されている。Sparkは通常、アク ションの時にすべてを再計算するのでこのようなケースでは非効率となる。 そこで、キャッシュをする。 firstWords.cache() firstWords.saveAsTextFile(“hdfs://…”) println(firstWords.count()) firstWordsの途中経過が一旦メモリ上に保持され、続く2つのアクションはこの キャッシュを使うようになり効率的に。
  • 14. Copyright © BrainPad Inc. All Rights Reserved. 14 RDDのキャッシュ filter map saveAsTextFileHDFS filter map countHDFS  キャッシュしない場合、全く同じ処理が2度行われる。 • HDFSからの読み込みも2回発生し、処理の間に読み込み対象が変 われば読み込む内容も変わる。 filter map saveAsTextFileHDFS count  キャッシュする場合、map処理までが省かれる。 cache
  • 15. Copyright © BrainPad Inc. All Rights Reserved. 3. 実行モデルとスケジューリング 15
  • 16. Copyright © BrainPad Inc. All Rights Reserved. 16 Sparkの実行モデル Driver Executor  Driver – ユーザープログラムをtaskに変換し、 executorに実行を命令する。 – Actionに伴いexecutorからデータを取得する。 – ユーザープログラムのmainメソッドを実行す るJVMプロセス。driverが終了すると、Spark アプリケーション自体が終了する。  Executor – driverから命令されたtaskを実行する。 – RDDのキャッシュを保持する。 – Spark起動時に起動されるJVMプロセス。 ※実際には、YARNやMesosなどのクラスタマネージャ上で動作 するので、それによって実行モデルは若干異なります。 Executor Executor
  • 17. Copyright © BrainPad Inc. All Rights Reserved. 1. ユーザープログラムが、transformationを組み合わせてRDDの参照グラフを作 成する。 2. ユーザープログラムが、actionを実行する。 3. Driverが、RDDの参照グラフからStageのDAG(有向グラフ)を作成する。 – Stage • 複数のTaskの集合。 • Shuffle(後述)が必要となるポイントでStageを分ける。 • 同じパーティションに対する処理が連続している場合、マージすることで最適化する。 – Task • executorの実行する処理の最小単位。1パーティションごとに作成される。 4. Executorに各Stageの処理を命令する。 17 Driverによる実行計画作成
  • 18. Copyright © BrainPad Inc. All Rights Reserved.  Shuffle – reduceByKey等により複数のパーティションを1つにまとめるため、データをある executorから別のexecutorに転送する処理。 – 処理がローカルで済まなくなるため、パフォーマンス上のボトルネックになりやすい。 18 Shuffle RDD RDD RDD RDD RDD RDD RDD RDD RDD RDD RDD RDD 同じパーティションに閉じた処理ならシャッフルは 不要(mapなど) 別パーティションが必要になる処理では、 シャッフルが生じる。
  • 19. Copyright © BrainPad Inc. All Rights Reserved.  Stageは、Shuffleを境界として分断 される。 – このケースではjoinがShuffleを起こし ている。  同じパーティションに対する処理が連 続する場合、処理は1つのステージに マージされる。(※) – Stage1はmapとfilterの2つの処理があ るが、実際にはmapとfilterを合成した 1つのStageに変換されている。 – これは“pipelining”と呼ばれる。 – Stageは複数のtaskで構成されており、 それぞれがexecutorで処理される。 ※厳密には、親RDDが1つの子RDDからのみし か参照されていない場合。(複数パーティション をマージするunionもこれに該当する) 19 Stageの分割例 map filter map join Stage1 Stage2 Stage3
  • 20. Copyright © BrainPad Inc. All Rights Reserved. 4. その他の主要なSparkコンポーネント 20
  • 21. Copyright © BrainPad Inc. All Rights Reserved.  Sparkで、ストリーミング処理を行うためのコンポーネント。  データは、一定間隔ごとにRDDとしてまとめられて処理される。 – このRDDのまとまりをDStreamと呼ぶ。 – Spark Streamingは一定間隔ごとにまとめられたRDDに対して処理を書くことになる ので、書き方は通常のSparkプログラミングとほぼ変わらない。(マイクロバッチ) 21 Spark Streaming ストリーミングデータ RDD RDD RDD 5秒 例:5秒間隔ごとにストリーミングデータを処理する場合 5秒 5秒 DSteam
  • 22. Copyright © BrainPad Inc. All Rights Reserved.  Spark SQL – 構造化されたRDD(SchemaRDD)に対してSQLで処理を記述するためのコンポーネ ント。 – JSONやParquet、Hiveなどの様々なデータソースに対応。  DataFrame – RやPandas(Python)ライクなデータ操作が可能なコンポーネント。 – Spark1.3で追加された。  Catalyst – Spark SQLやDataFrameのコードを最適化するオプティマイザ(内部的に使用されて いる)。 – 詳細についてはdatabricksのブログを参考。 • https://databricks.com/blog/2015/04/13/deep-dive-into-spark-sqls-catalyst- optimizer.html 22 Spark SQL、DataFrame
  • 23. Copyright © BrainPad Inc. All Rights Reserved.  Sparkで機械学習を行うためのコンポーネント  用意されているアルゴリズム例 – SVM – ロジスティック回帰 – 決定木 – K-means – ALS – などなど。  Spark Streamingと組み合わせて使うオンライン学習機もあり。 – Streaming K-meansとか。 23 MLlib
  • 24. Copyright © BrainPad Inc. All Rights Reserved. 5. まとめ 24
  • 25. Copyright © BrainPad Inc. All Rights Reserved.  Sparkは、インメモリ処理による高速化と、Spark Coreをベースとした多目的な コンポーネントを持つ分散処理ソフトウェア。  Scala,Java,PythonでSparkアプリケーションを記述可能。 – spark shellで気軽に試せるのが良い。  Spark上で扱うデータはRDDとして抽象化され、処理は遅延実行される。  Spark StreamingやMLlibなど、様々なコンポーネントがあり、互いに組み合わ せて使えるためメンテナンス性が高く総合的な学習コストも低い。  Learning SparkやAdvanced Analytics with Sparkが発売されるなど、情報も 揃ってきた感じ。 – 日本語情報も最近は増えてきた雰囲気がある。 – 今年のStrataはSpark関連のセッションが非常に多かったという話も。 25 まとめ
  • 26. Copyright © BrainPad Inc. All Rights Reserved.  Spark公式ドキュメント – https://spark.apache.org/docs/latest/index.html  Learning Spark – http://shop.oreilly.com/product/0636920028512.do  Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing – https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf 26 参考
  • 27. Copyright © BrainPad Inc. All Rights Reserved. 株式会社ブレインパッド 〒108-0071 東京都港区白金台3-2-10 白金台ビル3F TEL:03-6721-7001 FAX:03-6721-7010 info@brainpad.co.jp Copyright © BrainPad Inc. All Rights Reserved. www.brainpad.co.jp