sparkを用いたビッグデータ解析 〜 前編 〜

30
Sparkを用いた ビッグデータ解析 ~ 前編 ~ 株式会社サイバーエージェント 井上 ゆり

Upload: x1-ichi

Post on 16-Jul-2015

4.057 views

Category:

Technology


11 download

TRANSCRIPT

Page 1: Sparkを用いたビッグデータ解析 〜 前編 〜

Sparkを用いた ビッグデータ解析

~ 前編 ~

株式会社サイバーエージェント 井上 ゆり

Page 2: Sparkを用いたビッグデータ解析 〜 前編 〜

自己紹介 >

井上 ゆり 株式会社サイバーエージェント

アドテク本部 AMoAd所属

twitter: @iyunoriue

GitHub: x1-

HP: バツイチとインケンのエンジニアブログ http://x1.inkenkun.com/

2

Page 3: Sparkを用いたビッグデータ解析 〜 前編 〜

本日の発表内容

3

1. Apache Sparkって何?

2. Hadoopと何が違うの?

3. AMoAdではSparkで何してるの?

4. 分析ツール:Apache ZeppelinとiPython Notebook

5. Sparkゼミの取り組み

Page 4: Sparkを用いたビッグデータ解析 〜 前編 〜

Apache Sparkって何?

Page 5: Sparkを用いたビッグデータ解析 〜 前編 〜

Sparkの特徴その1

DAGベースの汎用並列処理エンジン ※DAG = Directed Acyclic Graph = 有向非循環グラフ

一連の処理をDAGで表現 エンジンの基本部分は汎用的なMapReduce

5

HadoopのMapReduceに比べて100倍速い。

ロジスティック回帰の速度比較

Page 6: Sparkを用いたビッグデータ解析 〜 前編 〜

Sparkの特徴その2

RDDによるデータ共有機構 ※RDD = Resilient Distributed Dataset = 不変で分散処理可能なデータセット

RDDの特徴

6

• 不変(イミュータブル)である • パーティション分割され、各サーバー上に分散配置される • インメモリ(可能なかぎり) • 遅延実行

Page 7: Sparkを用いたビッグデータ解析 〜 前編 〜

DAG & RDDの恩恵

・繰り返し処理(DAG)をメモリ上に保持

 効率的な反復アルゴリズム

・メモリ内の作業データセット(RDD)をキャッシュ

 低レイテンシの計算

7

Page 8: Sparkを用いたビッグデータ解析 〜 前編 〜

Hadoopと何が違うの?

Page 9: Sparkを用いたビッグデータ解析 〜 前編 〜

MapReduceでWord Count

9

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor

incididunt ut labore et

dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco

lorem 2lorem 1 ipsum 1 dolor 1

lorem 1 lorem 1

sit 1 amet 1 consect.. 1

do 1 eiusmod 1 tempor 1

adipisic.. 1 elit 1 sed 1

ipsum 1 ipsum 1 ipsum 1

dolor 1

ipsum 3

sit 1 sit 1 sit 1

dolor 1

sit 3

map shuffle reduce result

lorem 2 ipsum 3 dolor 1 sit 3 :

Page 10: Sparkを用いたビッグデータ解析 〜 前編 〜

MapReduceでWord Count

10

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor

incididunt ut labore et

dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco

lorem 2lorem 1 ipsum 1 dolor 1

lorem 1 lorem 1

sit 1 amet 1 consect.. 1

do 1 eiusmod 1 tempor 1

adipisic.. 1 elit 1 sed 1

ipsum 1 ipsum 1 ipsum 1

dolor 1

ipsum 3

sit 1 sit 1 sit 1

dolor 1

sit 3

map shuffle reduce result

lorem 2 ipsum 3 dolor 1 sit 3 :

(hadoopの場合)

・中間結果をディスクに書き出す ・正格評価 → 逐次計算

Page 11: Sparkを用いたビッグデータ解析 〜 前編 〜

MapReduceでWord Count

11

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor

incididunt ut labore et

dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco

lorem 2lorem 1 ipsum 1 dolor 1

lorem 1 lorem 1

sit 1 amet 1 consect.. 1

do 1 eiusmod 1 tempor 1

adipisic.. 1 elit 1 sed 1

ipsum 1 ipsum 1 ipsum 1

dolor 1

ipsum 3

sit 1 sit 1 sit 1

dolor 1

sit 3

map shuffle reduce result

lorem 2 ipsum 3 dolor 1 sit 3 :

(sparkの場合)

RDDDAG

・中間結果はメモリにキャッシュ ・遅延評価 → 計算量最適化

RDD RDD RDD

Page 12: Sparkを用いたビッグデータ解析 〜 前編 〜

AMoAdでは、 Sparkで何してるの?

Page 13: Sparkを用いたビッグデータ解析 〜 前編 〜

AMoAd = アドネットワーク

広告配信

数十億レコードのログ/日

13

集計もアドホックな分析もしたい。 リアルタイムに。

Page 14: Sparkを用いたビッグデータ解析 〜 前編 〜

AMoAd = アドネットワーク

広告配信

数十億レコードのログ/日

14

集計&アドホックな分析

Page 15: Sparkを用いたビッグデータ解析 〜 前編 〜

実は・・・

ログは

GoogleCloudStorage に集めています。

15

Page 16: Sparkを用いたビッグデータ解析 〜 前編 〜

GCS上のログをSparkで集計&分析しています。

16

Page 17: Sparkを用いたビッグデータ解析 〜 前編 〜

こんな風にクラスタ構成しています。

17

Page 18: Sparkを用いたビッグデータ解析 〜 前編 〜

アドホックな分析環境その1

Apache Zeppelin SparkにWebUI機能を提供するnotebook形式のデータ分析ツール。 https://zeppelin.incubator.apache.org/

→ 気軽にデータをビジュアライゼーションするのに使っています。

18

Page 19: Sparkを用いたビッグデータ解析 〜 前編 〜

Zeppelin

Page 20: Sparkを用いたビッグデータ解析 〜 前編 〜

Zeppelin

20

Page 21: Sparkを用いたビッグデータ解析 〜 前編 〜

アドホックな分析環境その2

iPython Notebook Pythonの対話実行をWebからインタラクティブに行うことのできるツール。PySparkはiPythonに対応している。 http://ipython.org/

 → より複雑な分析を行ったり、統計情報を扱う目的で使っています。

21

Page 22: Sparkを用いたビッグデータ解析 〜 前編 〜

iPython Notebook

Page 23: Sparkを用いたビッグデータ解析 〜 前編 〜

iPython Notebook

23

Page 24: Sparkを用いたビッグデータ解析 〜 前編 〜

サイバーエージェント・アドテク本部

Sparkゼミの取り組み

Page 25: Sparkを用いたビッグデータ解析 〜 前編 〜

サイバーエージェント・アドテク本部では

Sparkゼミ という取り組みを行っています。

25

Page 26: Sparkを用いたビッグデータ解析 〜 前編 〜

日々の業務で培ったScala力を活かし、神田勝規塾長の元、7人のメンバーでひたすらApache Sparkへのコントリビュートを行ってきました。

26

このあと発表する谷口

私です塾長

Page 27: Sparkを用いたビッグデータ解析 〜 前編 〜

結果、Spark1.3.0にコントリビュートしました!!

https://spark.apache.org/releases/spark-release-1-3-0.html27

~~

Page 28: Sparkを用いたビッグデータ解析 〜 前編 〜

このあと発表する谷口

28

https://issues.apache.org/jira/browse/SPARK-5094

Page 29: Sparkを用いたビッグデータ解析 〜 前編 〜

29

私もコントリビュートしました

自分でissueあげて修正した福原氏

https://issues.apache.org/jira/browse/SPARK-5618

https://issues.apache.org/jira/browse/SPARK-5320

Page 30: Sparkを用いたビッグデータ解析 〜 前編 〜

まだまだ未知の領域の多いApache Spark。

Sparkゼミでは、Sparkの良いユーザであるとともに、コントリビュータの一員としてSparkを育てていきたいと考えています。

30