狠狠撸

狠狠撸Share a Scribd company logo
BDAS と Spark 概要
目的
大規模分散処理とその上で動く機械学習コンポー
ネントのトレンドを紹介
Agenda
BDAS 概要
Spark 概要
おまけ
Cascading と Pattern
MLlib
BDAS 概要
Hadoop エコシステムと移行コスト
HDFS のデータを新しいシス
テムに移動するのは高コスト
できるだけ上のレイヤーを変
えることで Hadoop 自体の
欠点を吸収する方が良さそう
データの移行が大変なので
アプリケーション側で吸収
するような方向になるはず
そこで BDAS
What is DBAS ?
the Berkeley Data Analytics Stack, is an open
source software stack that integrates software
components being built by the AMPLab to
make sense of Big Data.
BDAS の全体像
BDAS のスポンサー
BDAS のコンポーネント1
● Apache Mesos
○ リソースマネージャー

● Tackyon
○ Distributed fault-tolerance in-memory
○ メモリに乗らない場合はディスクキャッシュ(?)

● Apache Spark
○ 大規模 in-memory 処理フレームワーク
BDAS のコンポーネント2
● Spark Streaming
○ Spark でストリーミング処理

● GraphX(開発途上)
○ ネットワーク分析用のシステム

● MLbase(開発途上)
○ Spark 向け大規模分散機械学習ライブラリ

● Shark
○ Hive の Spark 版
Shark の簡単な紹介
● in-memory で SQL like に処理を実行
○ Cloudera Impara みたいなもの(?)

● Spark の上で動いている
○ MapReduce based Architecture

● Hive Compatible
● SQL 以外にも複雑な分析を実行できる(らしい)
Spark 概要
Hadoop MapReduce の欠点
● アルゴリズムとしての欠点
○ リアルタイム
○ 分散処理間のデータのやり取り(SVM 無理とか)

● Hadoop としての欠点
○ 多段階 MapReduce のとき、都度各 JobTracker で
JVM を起動するので処理をしていない時間に無駄が多
い
○ MapReduce に HDFS の IO が必要なので、read/write
の時間が無駄
Hadoop は stable strage が対象
データを再利用する処理に向いていない
でも繰り返し処理
とか更新処理したいし…
Spark とは
● in-memory で分散処理をするためのコンポー
ネント
● Hadoop MapReduce には向いていないアルゴ
リズムを実装できる
○ Iterative Algorithm
■ k-means のような ML や Network Analysis
○ Interactive Data Mining
■ Scala を拡張したコンソールで対話的に実行
実装まわりの基礎知識
● 開発言語:Scala
○ 対話環境もある

● Hadoop で使える input resource を利用可能
○ ex) HDFS, S3, etc.
RDD (Resilient Distributed Datasets)
● 効率的に大規模データも分散メモリとして保持する機構
○ Fault tolerance, data locality, scalability
● イミュータブルで分割されたオブジェクトのコレクション
● 並列処理(map、filter、groupBy、join)をストレージ上の
データに適用した結果生成
● 再利用するためにメモリ上にキャッシュされる
Spark を利用したアプリケーション
●
●
●
●
●

インメモリに対するHiveによるデータマイニング(Conviva)
予測分析(Quantifind)
市街のトラフィック予測(Mobile Millennium)
TwitterのSpan判定(Monarch)
行列因子分解による協調フィルタリング
RDD Fault Tolerance
● メモリ上のデータが欠損したときに,元データが
どれでどういう風に処理されたものであるかな
どが保持
コードサンプル:Log Mining
実装例紹介:Logistic Regression
実装例紹介:Logistic Regression
Hadoop とのパフォーマンス比較
I/O がなくなることや
反復的 JVM 起動がなくなるので
早くなる
メモリに全部乗りません
メモリにのせられるだけ乗せて処理
本当に Fault Tolerance なの?
Spark で使えるオペレーション
Spark まとめ
● Hadoop MapReduce が苦手とする処理を補う
ための分散メモリ上の処理コンポーネント
● メモリにデータがのるならMapReduce より速い
● 開発言語は Scala
● Hive みたいに Shark で SQL を書ける
おまけ
MLib
●
●

Spark 向け機械学習ライブラリ
○ Mahout on Hadoop みたいなもの
サポートしている機械学習タイプ
○ Binary classification
■ Linear Support Vector Machines (SVMs)
■ Logistic Regression
○ Linear Regression
■ LinearRegressionWithSGD
■ RidgeRegressionWithSGD
■ LassoWithSGD
○ Clustering
■ k-means
○ Collaborative filtering
■ alternating least squares (ALS)
Cascading と Pattern
● Cascading
○ Hadoop 上の処理をより簡単に書くためのフレームワー
ク
○ 開発言語:Scala

● Cascading Pattern
○ Cascading で記述できる機械学習ライブラリ
○ Predictive Model Markup Language (PMML) 対応
■ SPSS, R などで記述した処理を PMML に出力して
Pattern で実行
Cascading Pattern がサポートする機械学習
●
●
●
●
●

Hierarchical Clustering
K-Means Clustering
Linear Regression
Logistic Regression
Random Forest Algorithm

● アルゴリズムを追加して欲しい場合は要請
○ http://www.surveymonkey.com/s/FG7D7VT
参考
●
●
●
●

http://spark.incubator.apache.org/talks/overview.pdf
https://amplab.cs.berkeley.edu/software/
http://d.hatena.ne.jp/kimutansk/20130901/1378023152
http://www.cascading.org/pattern/

More Related Content

叠诲补蝉と厂辫补谤办概要