sparkを用いたビッグデータ解析 〜 前編 〜
TRANSCRIPT
Sparkを用いた ビッグデータ解析
~ 前編 ~
株式会社サイバーエージェント 井上 ゆり
自己紹介 >
井上 ゆり 株式会社サイバーエージェント
アドテク本部 AMoAd所属
twitter: @iyunoriue
GitHub: x1-
HP: バツイチとインケンのエンジニアブログ http://x1.inkenkun.com/
2
本日の発表内容
3
1. Apache Sparkって何?
2. Hadoopと何が違うの?
3. AMoAdではSparkで何してるの?
4. 分析ツール:Apache ZeppelinとiPython Notebook
5. Sparkゼミの取り組み
Apache Sparkって何?
Sparkの特徴その1
DAGベースの汎用並列処理エンジン ※DAG = Directed Acyclic Graph = 有向非循環グラフ
一連の処理をDAGで表現 エンジンの基本部分は汎用的なMapReduce
5
HadoopのMapReduceに比べて100倍速い。
ロジスティック回帰の速度比較
Sparkの特徴その2
RDDによるデータ共有機構 ※RDD = Resilient Distributed Dataset = 不変で分散処理可能なデータセット
RDDの特徴
6
• 不変(イミュータブル)である • パーティション分割され、各サーバー上に分散配置される • インメモリ(可能なかぎり) • 遅延実行
DAG & RDDの恩恵
・繰り返し処理(DAG)をメモリ上に保持
効率的な反復アルゴリズム
・メモリ内の作業データセット(RDD)をキャッシュ
低レイテンシの計算
7
Hadoopと何が違うの?
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 :
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の場合)
・中間結果をディスクに書き出す ・正格評価 → 逐次計算
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
AMoAdでは、 Sparkで何してるの?
AMoAd = アドネットワーク
広告配信
数十億レコードのログ/日
13
集計もアドホックな分析もしたい。 リアルタイムに。
AMoAd = アドネットワーク
広告配信
数十億レコードのログ/日
14
集計&アドホックな分析
実は・・・
ログは
GoogleCloudStorage に集めています。
15
GCS上のログをSparkで集計&分析しています。
16
こんな風にクラスタ構成しています。
17
アドホックな分析環境その1
Apache Zeppelin SparkにWebUI機能を提供するnotebook形式のデータ分析ツール。 https://zeppelin.incubator.apache.org/
→ 気軽にデータをビジュアライゼーションするのに使っています。
18
Zeppelin
Zeppelin
20
アドホックな分析環境その2
iPython Notebook Pythonの対話実行をWebからインタラクティブに行うことのできるツール。PySparkはiPythonに対応している。 http://ipython.org/
→ より複雑な分析を行ったり、統計情報を扱う目的で使っています。
21
iPython Notebook
iPython Notebook
23
サイバーエージェント・アドテク本部
Sparkゼミの取り組み
サイバーエージェント・アドテク本部では
Sparkゼミ という取り組みを行っています。
25
日々の業務で培ったScala力を活かし、神田勝規塾長の元、7人のメンバーでひたすらApache Sparkへのコントリビュートを行ってきました。
26
このあと発表する谷口
私です塾長
結果、Spark1.3.0にコントリビュートしました!!
https://spark.apache.org/releases/spark-release-1-3-0.html27
~~
~
このあと発表する谷口
28
https://issues.apache.org/jira/browse/SPARK-5094
29
私もコントリビュートしました
自分でissueあげて修正した福原氏
https://issues.apache.org/jira/browse/SPARK-5618
https://issues.apache.org/jira/browse/SPARK-5320
まだまだ未知の領域の多いApache Spark。
Sparkゼミでは、Sparkの良いユーザであるとともに、コントリビュータの一員としてSparkを育てていきたいと考えています。
30