bigdataunivercity 2017年改めてapache...
TRANSCRIPT
© 2016 IBM Corporation
2017 年 改めて Apache Spark とデータサイエンスの関係についてのまとめ
Tanaka Y.P2017-1-27
© 2016 IBM Corporation2
自己紹介田中裕一( yuichi tanaka)主にアーキテクチャとサーバーサイドプログラムを担当することが多い。 Hadoop/Spark周りをよく触ります。Node.js、 Python、最近は Spark周りの仕事で Scalaを書くことが多い気がします。
休日は OSS 周りで遊んだり。
詳解 Apache Spark
© 2016 IBM Corporation3
自己紹介
© 2016 IBM Corporation4
アジェンダ
• 改めて Spark とはどんなフレームワークなのか?
• Spark はどのように動くのか?
• Spark で MachiLearning
• 従来の課題は何か、 Spark がなぜマッチするのか
• 2016 年 Spark を利用する環境はどうなったか?
• Spark で DeepLearning はどうか?
• Spark を取り巻く環境のまとめ
© 2016 IBM Corporation5
Spark とは
従来 Hadoop では難しかった BigData におけるアドホック分析やニアリアルタイム処理を実現するためのInMemory 分散並列処理フレームワーク。
• HDFS を筆頭に Cassandra など分散ストレージのデータと相性が良い• YARN,Mesos,Standalone の3種類の分散処理基盤の上で動作• SparkSQL,Streaming,MLlib,GraphX といった処理の拡張を持つ
© 2016 IBM Corporation6
Spark はどう動くのか?Spark とはRDD と DAG をコアコンセプトとして設計された分散並列処理フレームワーク
Driver Program
Worker Worker Worker
ProgramProgramProgram
DataDataData
© 2016 IBM Corporation7
Driver Program
Worker Worker Worker
ProgramProgramProgramDataDataData
Spark はどう動くのか?Spark とはRDD と DAG をコアコンセプトとして設計された分散並列処理フレームワーク
© 2016 IBM Corporation8
Driver Program
Worker Worker Worker
ProgramProgramProgramDataDataData
output output output
Spark はどう動くのか?Spark とはRDD と DAG をコアコンセプトとして設計された分散並列処理フレームワーク
© 2016 IBM Corporation9
WorkerNode
WorkerNode
WorkerNode
Partition0
Partition3
Partition1
Partition2
6,tanaka,532
1,tanaka,1002,tanaka,300
3,tsuchiya,504,kaijima,2000
5,tsuchiya,1320
Partition0
Partition3
(tanaka,100)(tanaka,300)
(tanaka,532)
Partition1(tsuchiya,50)(kaijima,2000)
Partition2(tsuchiya,1320)
Partition0(tanaka,932)
Partition2(kaijima,2000)
Partition1(tsuchiya,1370)
Stage0 Stage1
task0
task1
task2
task3
task4
task5
task6
Spark はどう動くのか?
© 2016 IBM Corporation10
Spark まとめ
• Spark ではレイテンシが重要なアドホックな分析やニアリアルタイムな分析が可能
• 複数の Storage からデータを集めて処理するなど Storage に依存しない
• ただしローカリティのメリットはなくなる
• たくさんのデータに対して一度に処理を行うことはとても得意
• 機械学習など同じデータに対して繰り返し処理を行うものが得意
© 2016 IBM Corporation11
Spark で MachineLearning
• MLlib は大きく2つの実装に分かれる• spark.mllib• spark.ml
• どちらを使えば良いか?• spark.ml を使うこと!• spark.mllib は 2 系でメンテモードになりました。
• 今後新しい機能は追加されません。タブン• ( 予定では 3.0 で remove される )
© 2016 IBM Corporation12
Spark で MachineLearning
• そもそも MachineLearning とは• データから新たな価値を見出すための手法の一つ
• MachineLearning では前処理が重要• 前処理8割といわれる程、データサイエンスの占める作業のうち、大部分がこの作業
• 前処理の例• フィールドのコード化(性別変換・カテゴリ変換)• ID 変換( Join,CookieSync, ジオコーディング)• 集計( GroupBy,Sum,Max,Min )• 形態素解析系処理(構文解析、分かち書き、ストップワード)• 名寄せ(表記ゆれ)• クレンジング(無効値処理、欠損値補完、外れ値補正)• 画像系処理(特徴抽出、スライス、サイズ変換、グレースケール)
• 背景データは分析されることを前提としていない。こう言った配慮は事業において負荷となる
© 2016 IBM Corporation13
HDFS
従来の課題は何か、 Spark がなぜマッチするのか• こうした多様な前処理は従来の Hadoop Ecosystem での実現は難しかった
CSV
ETL
中間DB
Table
中間
MLETL
中間 モデル
APP
Memory
CSV
ETL
DFDF
Table
DF
MLETL
DF モデル
Streaming
© 2016 IBM Corporation14
Spark を利用する環境はどうなったか?
• 15,16 年と Spark を Cloud で動かす環境が整ってきた• より手軽にデータサイエンスを試せる土壌
EMR HDInsight DataProc BigInsights
• Spark でデータサイエンスを行う I/F は何が良いのか?DataLab DataScienceExperience
なし
※DataProc と未統合
© 2016 IBM Corporation15
Spark で DeepLearning はどうか?
• MLlib だけでは DeepLearning は難しい(多層パーセプトロンはある)• Spark v2.1 でも難しい
• 16 年に各 DL フレームワークが Spark に対応• DL4J on Spark : https://deeplearning4j.org/• Caffe on Spark : https://github.com/yahoo/CaffeOnSpark• TensorSpark(Tensorflow on Spark) : https://github.com/adatao/tensorspark• Distributed Keras : https://github.com/cerndb/dist-keras• Sparkling Water : https://github.com/h2oai/sparkling-water/tree/rel-2.0
その他にも雨後の筍のように。
※Web 上でも様々な記事が上がっていますが、すでにメンテされてないリポジトリもあるので選定する際は注意が必要
© 2016 IBM Corporation16
DeepLearning4J を例に Spark 上での DL を見てみる
Driver
Worker
Worker
Worker
Worker
Worker
Data d1 d2 ・・
1−1 1−2 1−3 1−4 1−5
分割
パラメータ配布
分割
モーメンタム rmspropadagradなども
Parameter Average
再度 Diver に戻し、次のデータを同様に処理する
データを設定に基づいて分割
© 2016 IBM Corporation17
Spark を取り巻く環境のまとめ
• MLlib だけでなく前処理やデータのつなぎの部分でも Spark は重要
• 各 Cloud 業者がデータサイエンティストのための Cloud 環境を提供開始
• 従来のエンジニア向けの Cloud ではなく
• DeepLearning を分散処理するための基盤として Spark への対応が進んでる
• 深層学習だけでなく、「データサイエンス基盤」としても Spark は重要
• その他の機械学習の機能も Spark の対応が始められている
© 2016 IBM Corporation18
宣伝