SlideShare a Scribd company logo
1 of 51
1Copyright © 2014 NTT DATA Corporation
NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス
猿田 浩輔
2014年12月17日 JJUG ナイト・セミナー
Spark/MLlibではじめるスケーラブルな機械学習
2Copyright © 2014 NTT DATA Corporation
自己紹介
 所属/氏名
 NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス
 猿田 浩輔(さるた こうすけ)
 何をしている人?
 OSSを使ったR&Dやシステム開発、テクニカルサポートに携わっています
 6年ほど大規模分散処理基盤「Hadoop」関連のR&Dやシステム開発に関わってきま
した
 近年はHadoopから派生して、インメモリ分散処理基盤「Spark」にも携わっています
 著作物(共著)
 Hadoop徹底入門(初版/第2版) - 翔泳社
 HADOOP HACKS - オライリージャパン
3Copyright © 2014 NTT DATA Corporation
自己紹介
すこしばかりApache Sparkの開発に貢献しています
4Copyright © 2014 NTT DATA Corporation
 Spark+MLlibを語る上で外せない話題
大量データを扱う上での従来の機械学習ライブラリの課題と、
分散処理基盤「Hadoop」が切り開いた道
Hadoopが苦手とする処理とHadoopによる機械学習
 Spark+MLlibが解決した従来の機械学習ライブラリの課題
 Sparkやその周辺の、機械学習の活用を加速するしくみ
本日お話しすること
5Copyright © 2014 NTT DATA Corporation
 Apache HadoopやApache Sparkの詳細
 Apache Hadoop及びApache Sparkの内部挙動や詳細な機能/仕組みについての
解説は本筋からそれるため、最低限の説明にとどめます。
 Spark+MLlibのセットアップ方法
 Sparkの公式ドキュメントにセットアップ方法が記載されています。
- https://spark.apache.org/docs/latest/
 幾つか動作モードがありますが、ライブラリの使用感を確かめるだけならば、クラスタ
をセットアップしなくても手元のマシンでSparkの動作を確認できる「ローカルモード」
がお手軽です。
 MLlibの個別の学習ライブラリの使い方
 Spark Summit 2013で開催されたトレーニング教材や、AMP Campで用いられた教
材が参考になります。
- http://spark-summit.org/2013/exercises/
- http://ampcamp.berkeley.edu/5/exercises/
本日お話ししないこと
Copyright © 2014 NTT DATA Corporation 6
大量データを扱う上での従来の機械学習ライブラリ
の課題と分散処理基盤Hadoopが切り開いた道
7Copyright © 2014 NTT DATA Corporation
従来の機械学習ライブラリの
大量データの扱いに関する課題
機械学習で大量データを扱いたくなる場合がある
• モデルの精度を高めたい
 計算のもとになるデータ(標本)が大量にあれば、より事
実を正しく表したモデル(精度の高いモデル)が得られる
• 扱っているデータが爆発的に増え続ける性質を持つ
 全商品/全ユーザの情報をもとに協調フィルタリングを活
用してレコメンデーションしたい場合など。商品データや
ユーザデータは増え続ける
• などなど・・・
8Copyright © 2014 NTT DATA Corporation
従来の機械学習ライブラリの
大量データの扱いに関する課題
• 計算量やIO量が増えるが、現実的な時間で処理を
完了させる必要がある
• 大量のデータをどこに蓄積しておくか
機械学習で大量データを扱いたくなる場合がある
• モデルの精度を高めたい
 計算のもとになるデータ(標本)が大量にあれば、より事
実を正しく表したモデル(精度の高いモデル)が得られる
• 扱っているデータが爆発的に増え続ける性質を持つ
 全商品/全ユーザの情報をもとに協調フィルタリングを活
用してレコメンデーションしたい場合など。商品データや
ユーザデータは増え続ける
• などなど・・・
9Copyright © 2014 NTT DATA Corporation
• 機械学習は入力データをもとに計算した結果、事実を表す
モデルを作る
• 計算のもとになるデータが大量にあれば、より事実を正しく
説明した結果(精度の高い結果)が得られる
従来の機械学習ライブラリの
大量データの扱いに関する課題
機械学習において大量のデータを扱う際の悩みの種
• 計算量やIO量が増えるが、現実的な時間で処理を
完了させる必要がある
• データを蓄積しておく場所が必要になる
機械学習の一般的なセオリー• 従来の機械学習ライブラリは、単一マシンでの動作を前提として
いたものが多く、処理能力やデータの格納容量も単一マシンが
持つの能力の範囲に制約を受けた
• 特別な製品を用いることで解決できた道もあるが、やりたいこと
に対してコストパフォーマンスが良くない場合が多かった
• 機械学習に限らず、増え続けるデータを処理する業務などでも
同様の問題に直面した
特別な機器を用いず、リーズナブルにスケールアウ
トが可能な分散処理基盤が必要
10Copyright © 2014 NTT DATA Corporation
• 機械学習は入力データをもとに計算した結果、事実を表す
モデルを作る
• 計算のもとになるデータが大量にあれば、より事実を正しく
説明した結果(精度の高い結果)が得られる
従来の機械学習ライブラリの
大量データの扱いに関する課題
機械学習において大量のデータを扱う際の悩みの種
• 計算量やIO量が増えるが、現実的な時間で処理を
完了させる必要がある
• データを蓄積しておく場所が必要になる
機械学習の一般的なセオリー• 従来の機械学習ライブラリは、単一マシンでの動作を前提として
いたものが多く、処理能力やデータの格納容量も単一マシンが
持つの能力の範囲に制約を受けた
• 特別な製品を用いることで解決できた道もあるが、やりたいこと
に対してコストパフォーマンスが良くない場合が多かった
• 機械学習に限らず、増え続けるデータを処理する業務などでも
同様の問題に直面した
Apache Hadoopが、
分散処理のコモディティ化の道を切り開いた
特別な機器を用いず、リーズナブルにスケールアウ
トが可能な分散処理基盤が必要
Copyright © 2014 NTT DATA Corporation 11
大規模分散処理基盤
「Hadoop」が切り開いた道
12Copyright © 2014 NTT DATA Corporation
 オープンソースの大規模分散処理基盤
• Googleで利用されているソフトウェアのオープンソース実装(GFS,
MapReduce)
 Yahoo ResearchのDoug Cutting氏(現 Cloudera社)が Java で
開発
 特別な機器を用いず、コモディティなサーバ機器を複数束ねてク
ラスタを形成し、並列分散処理が可能
 大量のサーバを用いても現実的な運用が可能
 分散処理に関わる面倒な制御は基盤が面倒を見てくれる
 データの大きさ故にためられなかったり、現実的な時間で処理し
きることが従来のITアーキテクチャでは難しかった、もしくは高コス
トでしか実現できなかったデータ活用が可能となる』
Apache Hadoopとは?
13Copyright © 2014 NTT DATA Corporation
Hadoop MapReduceHDFS
HDFSとHadoop MapReduce
コモディティなサーバを大量に使用、故障発
生が前提の設計
データの多重化で可用性を担保する
ブロックサイズが大きく(64MB)、巨大なデータを
高スループットで読み書きするのに向いている
HDFSクライアント
SW SW SW
ファイルをブロックに
分割して分散配置
コピーをRackの内外に
多重作成して冗長化(3つ)
DataNodes
Rack
SHUFFLE
MAP
REDUCE
大規模分散処理向けフレームワーク
HDFSと連携し、ディスク上のデータ処理のスルー
プットを最大化
バッチ処理向けのフレームワーク
NameNode
14Copyright © 2014 NTT DATA Corporation
Apache Mahoutの登場
• Hadoop MapReduceを分散処理エンジンに据えたエ
コシステムが形成されるようになった
• 機械学習ライブラリ「Apache Mahout」はエコシステム
のひとつ
Hadoop Map Reduce
HDFS分散ファイル
システム
分散処理
フレームワーク
Mahout/Hive/Pig...
高レベル
ライブラリ/ツール
15Copyright © 2014 NTT DATA Corporation
Apache Mahoutの登場
• Hadoop MapReduceを分散処理エンジンに据えたエ
コシステムが形成されるようになった
• 機械学習ライブラリ「Apache Mahout」はエコシステム
のひとつ
Hadoop Map Reduce
HDFS分散ファイル
システム
分散処理
フレームワーク
Mahout/Hive/Pig...
高レベル
ライブラリ/ツール
• HadoopとMahoutの登場により、大量のデータを用いたスケーラ
ブルな機械学習が、リーズナブルに実現可能になった
• 一方で、MapReduceを前提とすると、不得意となる問題領域が
存在することが分かってきた
Copyright © 2014 NTT DATA Corporation 16
Hadoopが苦手とする処理Hadoopによる機械学習
17Copyright © 2014 NTT DATA Corporation
MahoutでKMeansを実行してみる
デモ
Hadoop MapReduce+MahoutでKMeansを動作させ、
挙動を観察する
Hadoop MapReduce+Mahoutが、
何が不得意なのか観察するために
18Copyright © 2014 NTT DATA Corporation
MahoutでKMeansを実行してみる
MahoutでKMeansを実行すると、反復処理の回数を
増やすほどに、モデルが作られるまでのレイテンシが
顕著になった。なぜ?
原因を究明するために、
KMeansがMapReduceでどのように処理されるのか観察する
19Copyright © 2014 NTT DATA Corporation
KMeansはMapReduceでどのように処理されるか
M R
Map処理
Reduce処理ジョブ
個々のMapReduceジョブで
は特徴空間の点同士の距離
計算や重心計算が、反復1
回分行われる
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
R
HDFS
学習用
データ
20Copyright © 2014 NTT DATA Corporation
KMeansはMapReduceでどのように処理されるか
M R
Map処理
Reduce処理ジョブ
個々のMapReduceジョブで
は特徴空間の点同士の距離
計算や重心計算が、反復1
回分行われる
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
R
HDFS
学習用
データ
ジョブ1つを実行するたびに、計算
リソースの確保なやスケジューリン
グが発生する
21Copyright © 2014 NTT DATA Corporation
KMeansはMapReduceでどのように処理されるか
M R
Map処理
Reduce処理ジョブ
個々のMapReduceジョブで
は特徴空間の点同士の距離
計算や重心計算が、反復1
回分行われる
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
R
HDFS
学習用
データ
ジョブ1つを実行するたびに、計算
リソースの確保なやスケジューリン
グが発生する
ジョブごとに計算
結果を書き出す
モデル
データ1
22Copyright © 2014 NTT DATA Corporation
KMeansはMapReduceでどのように処理されるか
M R
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
M R
Map処理
Reduce処理ジョブ
HDFS
個々のMapReduceジョブで
は特徴空間の点同士の距離
計算や重心計算が、反復1
回分行われる
学習用
データ
ジョブ1つを実行するたびに、計算
リソースの確保なやスケジューリン
グが発生する
モデル
データ1
モデル
データ1
学習用
データ
2回目以降の反復では、計算
過程のモデルデータと学習用
データをHDFSから読み出す
23Copyright © 2014 NTT DATA Corporation
KMeansはMapReduceでどのように処理されるか
M R
結果が収束するまで、反復の
数だけジョブが実行される
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
M R
Map処理
Reduce処理ジョブ
HDFS
個々のMapReduceジョブで
は特徴空間の点同士の距離
計算や重心計算が、反復1
回分行われる
学習用
データ
ジョブ1つを実行するたびに、計算
リソースの確保なやスケジューリン
グが発生する
モデル
データ1
反復のたびに、精度が
よくなったモデルが出
力される
モデル
データ1
学習用
データ
2回目以降の反復では、計算
過程のモデルデータと学習用
データをHDFSから読み出す
モデル
データ2
24Copyright © 2014 NTT DATA Corporation
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
KMeansはMapReduceでどのように処理されるか
M RM R
Map処理
Reduce処理
ジョブ
HDFS
データ M R
結果が収束するまで、反復の
数だけジョブが実行される
個々のMapReduceジョブで
は点同士の距離計算や重心
計算が、反復1回分行われる
ジョブ1つを実行するたびに、計算
リソースのアロケーション(コンテナ
の確保など)が発生する
ジョブ間はHDFSを介し
てデータを受け渡す
KMeansの実行プロセスから
MapReduce+Mahoutのレイテンシが大きい理由を整理すると・・・
 複数回の反復が、MapReduceの多段のジョブで構成され、個々
のジョブの起動に関わるオーバーヘッドが大きい
 反復のたびにHDFSへのアクセスが発生する。
Hadoop MapReduceは大規模なデータに対して、個々のジョブのス
ループットは最大化されるが、ジョブが多段になった際の全体のレイ
テンシが顕著になる
25Copyright © 2014 NTT DATA Corporation
 MahoutによるKMeansがどのようなMapReduceジョブに展開
されるのか観察する
KMeansはMapReduceでどのように処理されるか
M RM R
Map処理
Reduce処理
ジョブ
HDFS
データ M R
結果が収束するまで、反復の
数だけジョブが実行される
個々のMapReduceジョブで
は点同士の距離計算や重心
計算が、反復1回分行われる
ジョブ1つを実行するたびに、計算
リソースのアロケーション(コンテナ
の確保など)が発生する
ジョブ間はHDFSを介し
てデータを受け渡す
KMeansの実行プロセスから
MapReduce+Mahoutのレイテンシが大きい理由を整理すると・・・
 複数回の反復が、MapReduceの多段のジョブで構成され、個々
のジョブの起動に関わるオーバーヘッドが大きい
 反復のたびにHDFSへのアクセスが発生する。
Hadoop MapReduceは大規模なデータに対して、個々のジョブのス
ループットは最大化されるが、ジョブが多段になった際の全体のレイ
テンシが顕著になる
Apache Sparkが
スループットとレイテンシの両立にアプローチ
Copyright © 2014 NTT DATA Corporation 26
Spark+MLlibが解決した
従来の機械学習ライブラリの課題
27Copyright © 2014 NTT DATA Corporation
 Hadoopが苦手としていた、スループットとレイテンシの両立が必要な問
題領域にアプローチするために開発されたOSSのインメモリ分散処理
基盤
 Hadoop同様、大量のコモディティサーバを束ねて分散処理を行う
 UC Barkeleyに所属していたMatei Zaharia(現Databricks CTO)が
Scalaで開発
 RDDと呼ばれるフォールトトレラント性を考慮した分散コレクションに対し、
mapやfilter、reduceなどの典型的なデータ変換操作を繰り返して目的
の結果を得る処理モデル
 Hadoopと異なり、MapReduceの処理パラダイムの制約を受けない
Apache Sparkとは?
最新安定バージョンは1.1.1。12月中には1.2.0がリリースされる見込み
28Copyright © 2014 NTT DATA Corporation
Map
Reduce
Spark
HDFS
YARN
 HDFS上をストレージとして活用できる。大きなデータを高スループットで並列
に読み書きできる
 Hadoopの分散リソース管理基盤「YARN」上で動作可能
 現在のHadoopは従来の分散処理フレームワークからリソース管理基盤
「YARN」を切り出し、様々な分散処理フレームワークのための汎用的か
つスケーラブルな分散処理基盤になっている
Sparkのスケーラビリティや高スループットを
達成する仕組みはHadoopの上に成り立つ
従来から処理フレー
ムワークの層とリ
ソース管理の層を分
離した
YARN上で動作す
ることで、Hadoop
が持つスケーラビ
リティ/高スルー
プットの恩恵を受
けられる
29Copyright © 2014 NTT DATA Corporation
Hadoop MapReduceとSparkの処理の流れの違い
M RM R
Map処理 Reduce処理
HDFSに書き出し
HDFSから読み出し
 従来のHadoopではMapReduceの単位が1つのジョブ。複雑な処理はジョブ
を多段構成にする
RDD RDD RDD
データ変換(フィルター、フォーマット変換など)
 SparkではRDD(Resilient Distributed Dataset)の変換チェインで複雑な処
理でも1つのジョブで定義できる
ジョブ
フォールトトレラントな分散コレク
ション「RDD」が基本のデータ構造
HDFSに書き出し
HDFSから読み出し
何度も読み込むデータはキャッ
シュしておくことで、都度発生する
計算量やIO量を削減できる
M R
RDD
RDD
RDD
RDD
30Copyright © 2014 NTT DATA Corporation
Sparkのエコシステムのひとつ「MLlib」
• Sparkの目標のひとつはコアとなる分散処理エン
ジンを中心に据え、それを活用するためのライブラ
リを充実させること
• 機械学習ライブラリ「MLlib」はそのひとつ
Apache Spark Core (分散処理エンジン)
Spark SQL
Spark
Streaming
MLlib GraphX
Sparkアプリ内で
SQL/HQLを
利用できる
ストリーム処理を
マイクロバッチ方式で実現
Sparkアプリ内で
機械学習を
利用できる
Sparkアプリ内で
グラフ処理を
利用できる
31Copyright © 2014 NTT DATA Corporation
 プログラミングインターフェイス
 Scala/Java/Pythonでプログラミング可能
 ポピュラーな機械学習アルゴリズム
 分類(SVM、ロジスティック回帰、ナイーブベイズ、デシジョンツリー)
 線形回帰(最小二乗法/Lasso/Ridge)
 協調フィルタリング(ALS)
 クラスタリング(KMeans)
 次元削減処理
 SVD(特異値分解)
 PVA(主成分分析)
 前処理用のライブラリ
 TF-IDF
 カイ二乗検定
 共分散行列計算
 サンプリング
 テスト用のランダムなデータ生成
MLlibが提供する道具の一例
32Copyright © 2014 NTT DATA Corporation
 プログラミングインターフェイス
 Scala/Java/Pythonでプログラミング可能
 ポピュラーな機械学習アルゴリズム
 分類(SVM、ロジスティック回帰、ナイーブベイズ、デシジョンツリー)
 線形回帰(最小二乗法/Lasso/Ridge)
 協調フィルタリング(ALS)
 クラスタリング(KMeans)
 次元削減処理
 SVD(特異値分解)
 PVA(主成分分析)
 前処理用のライブラリ
 TF-IDF
 カイ二乗検定
 共分散行列計算
 サンプリング
 テスト用のランダムなデータ生成
MLlibが提供する道具の一例
時期安定バージョンのSpark 1.2.0からは、MLlib
の後継となるSpark MLのα版パッケージがMLlib
に付属する形で同梱される
33Copyright © 2014 NTT DATA Corporation
MLlibのコード例(KMeans学習部分@Scala)
学習用データをベクタデータに
変換し、更にRDDに変換
学習用データは何度も読み込む
ので、メモリ上にキャッシュしておく
学習
大まかに、
• 学習データを特徴ベクトルに変換する
• 特徴ベクトル群をSparkの共通的な分散コレクション「RDD」に変換する
• 学習ベクトルを表したRDDは反復のたびに何度も使用するのでキャッシュしておく
• 生成したRDDをもとに学習させる
の流れでモデルを作る
34Copyright © 2014 NTT DATA Corporation
MLlibのコード例(KMeans学習部分@Java)
学習データからRDDを作成
学習
35Copyright © 2014 NTT DATA Corporation
MLlibのコード例(KMeans学習部分@Java)
これはSpark 0.9まで
またはJava7までの書き方!
36Copyright © 2014 NTT DATA Corporation
MLlibのコード例(KMeans学習部分@Java8)
Spark 1.0以降ではラムダ式で
すっきり記述できる
学習データからRDDを作成
学習
37Copyright © 2014 NTT DATA Corporation
Spark+MLlibでKMeansを実行してみる
デモ
Spark+MLlibでKMeansを動作させ、挙動を観察する
MLlibのスピード感を体感してみよう
38Copyright © 2014 NTT DATA Corporation
Spark+MLlibでKMeansを実行してみる
Mahout+Hadoop MapReduceの場合と比較して、収
束のための反復処理が早々に終了した。なぜ?
Mahoutの場合と同様、
KMeansがSparkでどのように処理されるのか観察する
39Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD
HDFS
ジョブ
・・・
変換
学習用
データ
RDD
RDDの複数回の変
換が特徴空間の
点同士の距離計
算や重心の計算
に対応
40Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD
HDFS
ジョブ
・・・
変換
学習用
データ
RDD
学習用データは何度も
読み込むのでキャッシュ
する
RDDの複数回の変
換が特徴空間の
点同士の距離計
算や重心の計算
に対応
41Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD RDD
ジョブ
・・・ RDD ・・・
計算結果が収束するか、指
定された回数まで同様の計
算を実行する
変換
HDFS
学習用
データ
学習用データは何度も
読み込むのでキャッシュ
する
反復過程
のモデル
RDDの複数回の変
換が特徴空間の
点同士の距離計
算や重心の計算
に対応
42Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD RDD
ジョブ
・・・ RDD ・・・
計算結果が収束するか、指
定された回数まで同様の計
算を実行する
変換
HDFS
学習用
データ
学習用データは何度も
読み込むのでキャッシュ
する
2回目以降の反復では、
学習用データは都度
HDFSから読み込まず、
キャッシュを利用できる
反復過程
のモデル
最終結果の
モデル
RDDの複数回の変
換が特徴空間の
点同士の距離計
算や重心の計算
に対応
43Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD RDD
ジョブ
・・・ RDD ・・・
計算結果が収束するか、指
定された回数まで同様の計
算を実行する
RDDの複数回の変
換が特徴空間の
点同士の距離計
算や重心の計算
に対応
変換
HDFS
学習用
データ
学習用データは何度も
読み込むのでキャッシュ
する
2回目以降の反復では、
学習用データは都度
HDFSから読み込まず、
キャッシュを利用できる
反復過程
のモデル
最終結果の
モデル
反復間でネット
ワーク転送が発
生するのは、反
復過程のモデ
ルなど最低限に
抑えられる
44Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD RDD
ジョブ
・・・ RDD ・・・
計算結果が収束するか、指
定された回数まで同様の計
算を実行する
RDDの複数回の変
換が特徴空間の
点同士の距離計
算や重心の計算
に対応
変換
HDFS
学習用
データ
学習用データは何度も
読み込むのでキャッシュ
する
2回目以降の反復では、
学習用データは都度
HDFSから読み込まず、
キャッシュを利用できる
反復過程
のモデル
最終結果の
モデル
反復間でネット
ワーク転送が発
生するのは、反
復過程のモデ
ルなど最低限に
抑えられる
一連の反復が
1つのジョブで
表現される
45Copyright © 2014 NTT DATA Corporation
KMeansはSparkでどのように処理されるか
RDD RDD RDD
HDFS
ジョブ
・・・ RDD ・・・
計算結果が収束するか、指
定された回数まで同様の計
算を実行する
反復ごとのデータの受け渡し
にはHDFSを介さない
RDDの複数回の変換が特徴
空間の点同士の距離計算や
重心の計算に対応
KMeansの実行プロセスからSpark+MLlibの特徴をまとめると・・・
 複数回の反復処理を1回のジョブとして定義できるので、ジョブ起
動に関わるオーバーヘッドがジョブ全体に占める割合が小さくなる
 キャッシュ機構を活用することで、反復ごとに学習データをHDFSか
ら読みだす必要がなく、IOのオーバーヘッドを削減できる
 反復処理間でのデータ交換に関わるネットワーク転送やディスクIO
が最低限に抑えられるようにスケジューリングが工夫されている
反復処理全体のレイテンシを
小さくすることに貢献している
Copyright © 2014 NTT DATA Corporation 46
機械学習の活用を加速する仕組み
47Copyright © 2014 NTT DATA Corporation
 Sparkには試行錯誤のための道具がそろっている
Sparkに付属するインタラクティブシェルで、試行錯誤しながら
パラメータのチューニングや使用するアルゴリズムの選定など、
試行錯誤の回転率を上げることができる
 MLlibはSparkプロジェクトに包含されたエコシステムで
ある
Sparkプロジェクトに包含されているほかのエコシステムとの連
携が容易
- Spark Streaming+MLlibでオンライン機械学習
- Spark SQLで作成したテーブルデータを機械学習で活用
機械学習の活用を加速する
48Copyright © 2014 NTT DATA Corporation
Map
Reduce
Spark
MLlibなど
HDFS分散ファイルシステム
YARN分散リソース管理基盤
分散処理フレームワーク
そのほかの
フレームワーク
フレームワーク間でデータを共有可能
Hive/Pig・・・高レベルライブラリ/ツール
分散処理フレームワーク間で連携が可能
YARN上のフレームワーク間でデータの共有や処理系の使い分けによって、
 もともと機械学習とは別の目的で利用していたデータを機械学習に活用
 クラスタのメモリの総量におさまらないような大量の未整形データを、従来の
MapReducedで処理し、Spark+MLlibでの機械学習に適した形に成形
などが可能になる
49Copyright © 2014 NTT DATA Corporation
 大量データを扱う上での従来の機械学習ライブラリの課題と分
散処理基盤「Hadoop」が切り開いた道
 リーズナブルにスケールアウト可能な処理系が必要であり、Hadoop
がそれを可能にした
 Hadoopが苦手とする処理とHadoopによる機械学習
 反復処理をMapReduceで表現すると多段のジョブ構成になるが、
ジョブが多段になると処理全体のレイテンシが大きくなる
 Spark+MLlibが解決した従来の機械学習ライブラリの課題
 Hadoopの仕組みの活用でスケーラブルな機械学習を可能にした
 複雑な処理のレイテンシを小さくする工夫で反復処理を高速化した
 機械学習の活用を加速するしくみ
 Sparkには試行錯誤しやすい仕組みが備わっている
 Sparkのエコシステム間連携や、分散処理フレームワーク間連携に
よって、機械学習の活用の幅出しが可能
まとめ
50Copyright © 2014 NTT DATA Corporation
【余談】その後のMahout
MahoutもSparkでの動作をサポートするようです
Copyright © 2011 NTT DATA Corporation
Copyright © 2014 NTT DATA Corporation
お問い合わせ先:
株式会社NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス
URL: http://oss.nttdata.co.jp/hadoop
メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496
ご清聴ありがとうございました

More Related Content

What's hot

【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)Deep Learning JP
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Modelscvpaper. challenge
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門KnowledgeGraph
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...NTT DATA Technology & Innovation
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門Satoru Ishikawa
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてSho Takase
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれからcyberagent
 

What's hot (20)

【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
MLOps入門
MLOps入門MLOps入門
MLOps入門
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門
 
Amazon SageMaker で始める機械学習
Amazon SageMaker で始める機械学習Amazon SageMaker で始める機械学習
Amazon SageMaker で始める機械学習
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから
 

Similar to Spark MLlibではじめるスケーラブルな機械学習

並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...NTT DATA OSS Professional Services
 
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)NTT DATA OSS Professional Services
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...NTT DATA OSS Professional Services
 
20140711 evf2014 hadoop_recommendmachinelearning
20140711 evf2014 hadoop_recommendmachinelearning20140711 evf2014 hadoop_recommendmachinelearning
20140711 evf2014 hadoop_recommendmachinelearningTakumi Yoshida
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)NTT DATA OSS Professional Services
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックAdvancedTechNight
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~NTT DATA OSS Professional Services
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)NTT DATA OSS Professional Services
 
Hadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめHadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめYuta Imai
 
マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会伊藤 孝
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTT DATA OSS Professional Services
 
Nifty cloud c4 sa meetup
Nifty cloud c4 sa meetupNifty cloud c4 sa meetup
Nifty cloud c4 sa meetupYuichi Saotome
 
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーションレガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーションMasanori Satoh
 
CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義Shin Matsumoto
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編Kotaro Tsukui
 
DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発Koichi Hamada
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopDataWorks Summit
 

Similar to Spark MLlibではじめるスケーラブルな機械学習 (20)

並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
 
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATAApache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
 
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
 
Hadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tkHadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tk
 
20140711 evf2014 hadoop_recommendmachinelearning
20140711 evf2014 hadoop_recommendmachinelearning20140711 evf2014 hadoop_recommendmachinelearning
20140711 evf2014 hadoop_recommendmachinelearning
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバック
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
 
Hadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめHadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめ
 
マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
 
Nifty cloud c4 sa meetup
Nifty cloud c4 sa meetupNifty cloud c4 sa meetup
Nifty cloud c4 sa meetup
 
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーションレガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
 
CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
 
DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning Hadoop
 

More from NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのことNTT DATA OSS Professional Services
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~NTT DATA OSS Professional Services
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)NTT DATA OSS Professional Services
 

More from NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
 

Spark MLlibではじめるスケーラブルな機械学習

  • 1. 1Copyright © 2014 NTT DATA Corporation NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス 猿田 浩輔 2014年12月17日 JJUG ナイト・セミナー Spark/MLlibではじめるスケーラブルな機械学習
  • 2. 2Copyright © 2014 NTT DATA Corporation 自己紹介  所属/氏名  NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス  猿田 浩輔(さるた こうすけ)  何をしている人?  OSSを使ったR&Dやシステム開発、テクニカルサポートに携わっています  6年ほど大規模分散処理基盤「Hadoop」関連のR&Dやシステム開発に関わってきま した  近年はHadoopから派生して、インメモリ分散処理基盤「Spark」にも携わっています  著作物(共著)  Hadoop徹底入門(初版/第2版) - 翔泳社  HADOOP HACKS - オライリージャパン
  • 3. 3Copyright © 2014 NTT DATA Corporation 自己紹介 すこしばかりApache Sparkの開発に貢献しています
  • 4. 4Copyright © 2014 NTT DATA Corporation  Spark+MLlibを語る上で外せない話題 大量データを扱う上での従来の機械学習ライブラリの課題と、 分散処理基盤「Hadoop」が切り開いた道 Hadoopが苦手とする処理とHadoopによる機械学習  Spark+MLlibが解決した従来の機械学習ライブラリの課題  Sparkやその周辺の、機械学習の活用を加速するしくみ 本日お話しすること
  • 5. 5Copyright © 2014 NTT DATA Corporation  Apache HadoopやApache Sparkの詳細  Apache Hadoop及びApache Sparkの内部挙動や詳細な機能/仕組みについての 解説は本筋からそれるため、最低限の説明にとどめます。  Spark+MLlibのセットアップ方法  Sparkの公式ドキュメントにセットアップ方法が記載されています。 - https://spark.apache.org/docs/latest/  幾つか動作モードがありますが、ライブラリの使用感を確かめるだけならば、クラスタ をセットアップしなくても手元のマシンでSparkの動作を確認できる「ローカルモード」 がお手軽です。  MLlibの個別の学習ライブラリの使い方  Spark Summit 2013で開催されたトレーニング教材や、AMP Campで用いられた教 材が参考になります。 - http://spark-summit.org/2013/exercises/ - http://ampcamp.berkeley.edu/5/exercises/ 本日お話ししないこと
  • 6. Copyright © 2014 NTT DATA Corporation 6 大量データを扱う上での従来の機械学習ライブラリ の課題と分散処理基盤Hadoopが切り開いた道
  • 7. 7Copyright © 2014 NTT DATA Corporation 従来の機械学習ライブラリの 大量データの扱いに関する課題 機械学習で大量データを扱いたくなる場合がある • モデルの精度を高めたい  計算のもとになるデータ(標本)が大量にあれば、より事 実を正しく表したモデル(精度の高いモデル)が得られる • 扱っているデータが爆発的に増え続ける性質を持つ  全商品/全ユーザの情報をもとに協調フィルタリングを活 用してレコメンデーションしたい場合など。商品データや ユーザデータは増え続ける • などなど・・・
  • 8. 8Copyright © 2014 NTT DATA Corporation 従来の機械学習ライブラリの 大量データの扱いに関する課題 • 計算量やIO量が増えるが、現実的な時間で処理を 完了させる必要がある • 大量のデータをどこに蓄積しておくか 機械学習で大量データを扱いたくなる場合がある • モデルの精度を高めたい  計算のもとになるデータ(標本)が大量にあれば、より事 実を正しく表したモデル(精度の高いモデル)が得られる • 扱っているデータが爆発的に増え続ける性質を持つ  全商品/全ユーザの情報をもとに協調フィルタリングを活 用してレコメンデーションしたい場合など。商品データや ユーザデータは増え続ける • などなど・・・
  • 9. 9Copyright © 2014 NTT DATA Corporation • 機械学習は入力データをもとに計算した結果、事実を表す モデルを作る • 計算のもとになるデータが大量にあれば、より事実を正しく 説明した結果(精度の高い結果)が得られる 従来の機械学習ライブラリの 大量データの扱いに関する課題 機械学習において大量のデータを扱う際の悩みの種 • 計算量やIO量が増えるが、現実的な時間で処理を 完了させる必要がある • データを蓄積しておく場所が必要になる 機械学習の一般的なセオリー• 従来の機械学習ライブラリは、単一マシンでの動作を前提として いたものが多く、処理能力やデータの格納容量も単一マシンが 持つの能力の範囲に制約を受けた • 特別な製品を用いることで解決できた道もあるが、やりたいこと に対してコストパフォーマンスが良くない場合が多かった • 機械学習に限らず、増え続けるデータを処理する業務などでも 同様の問題に直面した 特別な機器を用いず、リーズナブルにスケールアウ トが可能な分散処理基盤が必要
  • 10. 10Copyright © 2014 NTT DATA Corporation • 機械学習は入力データをもとに計算した結果、事実を表す モデルを作る • 計算のもとになるデータが大量にあれば、より事実を正しく 説明した結果(精度の高い結果)が得られる 従来の機械学習ライブラリの 大量データの扱いに関する課題 機械学習において大量のデータを扱う際の悩みの種 • 計算量やIO量が増えるが、現実的な時間で処理を 完了させる必要がある • データを蓄積しておく場所が必要になる 機械学習の一般的なセオリー• 従来の機械学習ライブラリは、単一マシンでの動作を前提として いたものが多く、処理能力やデータの格納容量も単一マシンが 持つの能力の範囲に制約を受けた • 特別な製品を用いることで解決できた道もあるが、やりたいこと に対してコストパフォーマンスが良くない場合が多かった • 機械学習に限らず、増え続けるデータを処理する業務などでも 同様の問題に直面した Apache Hadoopが、 分散処理のコモディティ化の道を切り開いた 特別な機器を用いず、リーズナブルにスケールアウ トが可能な分散処理基盤が必要
  • 11. Copyright © 2014 NTT DATA Corporation 11 大規模分散処理基盤 「Hadoop」が切り開いた道
  • 12. 12Copyright © 2014 NTT DATA Corporation  オープンソースの大規模分散処理基盤 • Googleで利用されているソフトウェアのオープンソース実装(GFS, MapReduce)  Yahoo ResearchのDoug Cutting氏(現 Cloudera社)が Java で 開発  特別な機器を用いず、コモディティなサーバ機器を複数束ねてク ラスタを形成し、並列分散処理が可能  大量のサーバを用いても現実的な運用が可能  分散処理に関わる面倒な制御は基盤が面倒を見てくれる  データの大きさ故にためられなかったり、現実的な時間で処理し きることが従来のITアーキテクチャでは難しかった、もしくは高コス トでしか実現できなかったデータ活用が可能となる』 Apache Hadoopとは?
  • 13. 13Copyright © 2014 NTT DATA Corporation Hadoop MapReduceHDFS HDFSとHadoop MapReduce コモディティなサーバを大量に使用、故障発 生が前提の設計 データの多重化で可用性を担保する ブロックサイズが大きく(64MB)、巨大なデータを 高スループットで読み書きするのに向いている HDFSクライアント SW SW SW ファイルをブロックに 分割して分散配置 コピーをRackの内外に 多重作成して冗長化(3つ) DataNodes Rack SHUFFLE MAP REDUCE 大規模分散処理向けフレームワーク HDFSと連携し、ディスク上のデータ処理のスルー プットを最大化 バッチ処理向けのフレームワーク NameNode
  • 14. 14Copyright © 2014 NTT DATA Corporation Apache Mahoutの登場 • Hadoop MapReduceを分散処理エンジンに据えたエ コシステムが形成されるようになった • 機械学習ライブラリ「Apache Mahout」はエコシステム のひとつ Hadoop Map Reduce HDFS分散ファイル システム 分散処理 フレームワーク Mahout/Hive/Pig... 高レベル ライブラリ/ツール
  • 15. 15Copyright © 2014 NTT DATA Corporation Apache Mahoutの登場 • Hadoop MapReduceを分散処理エンジンに据えたエ コシステムが形成されるようになった • 機械学習ライブラリ「Apache Mahout」はエコシステム のひとつ Hadoop Map Reduce HDFS分散ファイル システム 分散処理 フレームワーク Mahout/Hive/Pig... 高レベル ライブラリ/ツール • HadoopとMahoutの登場により、大量のデータを用いたスケーラ ブルな機械学習が、リーズナブルに実現可能になった • 一方で、MapReduceを前提とすると、不得意となる問題領域が 存在することが分かってきた
  • 16. Copyright © 2014 NTT DATA Corporation 16 Hadoopが苦手とする処理Hadoopによる機械学習
  • 17. 17Copyright © 2014 NTT DATA Corporation MahoutでKMeansを実行してみる デモ Hadoop MapReduce+MahoutでKMeansを動作させ、 挙動を観察する Hadoop MapReduce+Mahoutが、 何が不得意なのか観察するために
  • 18. 18Copyright © 2014 NTT DATA Corporation MahoutでKMeansを実行してみる MahoutでKMeansを実行すると、反復処理の回数を 増やすほどに、モデルが作られるまでのレイテンシが 顕著になった。なぜ? 原因を究明するために、 KMeansがMapReduceでどのように処理されるのか観察する
  • 19. 19Copyright © 2014 NTT DATA Corporation KMeansはMapReduceでどのように処理されるか M R Map処理 Reduce処理ジョブ 個々のMapReduceジョブで は特徴空間の点同士の距離 計算や重心計算が、反復1 回分行われる  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する R HDFS 学習用 データ
  • 20. 20Copyright © 2014 NTT DATA Corporation KMeansはMapReduceでどのように処理されるか M R Map処理 Reduce処理ジョブ 個々のMapReduceジョブで は特徴空間の点同士の距離 計算や重心計算が、反復1 回分行われる  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する R HDFS 学習用 データ ジョブ1つを実行するたびに、計算 リソースの確保なやスケジューリン グが発生する
  • 21. 21Copyright © 2014 NTT DATA Corporation KMeansはMapReduceでどのように処理されるか M R Map処理 Reduce処理ジョブ 個々のMapReduceジョブで は特徴空間の点同士の距離 計算や重心計算が、反復1 回分行われる  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する R HDFS 学習用 データ ジョブ1つを実行するたびに、計算 リソースの確保なやスケジューリン グが発生する ジョブごとに計算 結果を書き出す モデル データ1
  • 22. 22Copyright © 2014 NTT DATA Corporation KMeansはMapReduceでどのように処理されるか M R  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する M R Map処理 Reduce処理ジョブ HDFS 個々のMapReduceジョブで は特徴空間の点同士の距離 計算や重心計算が、反復1 回分行われる 学習用 データ ジョブ1つを実行するたびに、計算 リソースの確保なやスケジューリン グが発生する モデル データ1 モデル データ1 学習用 データ 2回目以降の反復では、計算 過程のモデルデータと学習用 データをHDFSから読み出す
  • 23. 23Copyright © 2014 NTT DATA Corporation KMeansはMapReduceでどのように処理されるか M R 結果が収束するまで、反復の 数だけジョブが実行される  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する M R Map処理 Reduce処理ジョブ HDFS 個々のMapReduceジョブで は特徴空間の点同士の距離 計算や重心計算が、反復1 回分行われる 学習用 データ ジョブ1つを実行するたびに、計算 リソースの確保なやスケジューリン グが発生する モデル データ1 反復のたびに、精度が よくなったモデルが出 力される モデル データ1 学習用 データ 2回目以降の反復では、計算 過程のモデルデータと学習用 データをHDFSから読み出す モデル データ2
  • 24. 24Copyright © 2014 NTT DATA Corporation  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する KMeansはMapReduceでどのように処理されるか M RM R Map処理 Reduce処理 ジョブ HDFS データ M R 結果が収束するまで、反復の 数だけジョブが実行される 個々のMapReduceジョブで は点同士の距離計算や重心 計算が、反復1回分行われる ジョブ1つを実行するたびに、計算 リソースのアロケーション(コンテナ の確保など)が発生する ジョブ間はHDFSを介し てデータを受け渡す KMeansの実行プロセスから MapReduce+Mahoutのレイテンシが大きい理由を整理すると・・・  複数回の反復が、MapReduceの多段のジョブで構成され、個々 のジョブの起動に関わるオーバーヘッドが大きい  反復のたびにHDFSへのアクセスが発生する。 Hadoop MapReduceは大規模なデータに対して、個々のジョブのス ループットは最大化されるが、ジョブが多段になった際の全体のレイ テンシが顕著になる
  • 25. 25Copyright © 2014 NTT DATA Corporation  MahoutによるKMeansがどのようなMapReduceジョブに展開 されるのか観察する KMeansはMapReduceでどのように処理されるか M RM R Map処理 Reduce処理 ジョブ HDFS データ M R 結果が収束するまで、反復の 数だけジョブが実行される 個々のMapReduceジョブで は点同士の距離計算や重心 計算が、反復1回分行われる ジョブ1つを実行するたびに、計算 リソースのアロケーション(コンテナ の確保など)が発生する ジョブ間はHDFSを介し てデータを受け渡す KMeansの実行プロセスから MapReduce+Mahoutのレイテンシが大きい理由を整理すると・・・  複数回の反復が、MapReduceの多段のジョブで構成され、個々 のジョブの起動に関わるオーバーヘッドが大きい  反復のたびにHDFSへのアクセスが発生する。 Hadoop MapReduceは大規模なデータに対して、個々のジョブのス ループットは最大化されるが、ジョブが多段になった際の全体のレイ テンシが顕著になる Apache Sparkが スループットとレイテンシの両立にアプローチ
  • 26. Copyright © 2014 NTT DATA Corporation 26 Spark+MLlibが解決した 従来の機械学習ライブラリの課題
  • 27. 27Copyright © 2014 NTT DATA Corporation  Hadoopが苦手としていた、スループットとレイテンシの両立が必要な問 題領域にアプローチするために開発されたOSSのインメモリ分散処理 基盤  Hadoop同様、大量のコモディティサーバを束ねて分散処理を行う  UC Barkeleyに所属していたMatei Zaharia(現Databricks CTO)が Scalaで開発  RDDと呼ばれるフォールトトレラント性を考慮した分散コレクションに対し、 mapやfilter、reduceなどの典型的なデータ変換操作を繰り返して目的 の結果を得る処理モデル  Hadoopと異なり、MapReduceの処理パラダイムの制約を受けない Apache Sparkとは? 最新安定バージョンは1.1.1。12月中には1.2.0がリリースされる見込み
  • 28. 28Copyright © 2014 NTT DATA Corporation Map Reduce Spark HDFS YARN  HDFS上をストレージとして活用できる。大きなデータを高スループットで並列 に読み書きできる  Hadoopの分散リソース管理基盤「YARN」上で動作可能  現在のHadoopは従来の分散処理フレームワークからリソース管理基盤 「YARN」を切り出し、様々な分散処理フレームワークのための汎用的か つスケーラブルな分散処理基盤になっている Sparkのスケーラビリティや高スループットを 達成する仕組みはHadoopの上に成り立つ 従来から処理フレー ムワークの層とリ ソース管理の層を分 離した YARN上で動作す ることで、Hadoop が持つスケーラビ リティ/高スルー プットの恩恵を受 けられる
  • 29. 29Copyright © 2014 NTT DATA Corporation Hadoop MapReduceとSparkの処理の流れの違い M RM R Map処理 Reduce処理 HDFSに書き出し HDFSから読み出し  従来のHadoopではMapReduceの単位が1つのジョブ。複雑な処理はジョブ を多段構成にする RDD RDD RDD データ変換(フィルター、フォーマット変換など)  SparkではRDD(Resilient Distributed Dataset)の変換チェインで複雑な処 理でも1つのジョブで定義できる ジョブ フォールトトレラントな分散コレク ション「RDD」が基本のデータ構造 HDFSに書き出し HDFSから読み出し 何度も読み込むデータはキャッ シュしておくことで、都度発生する 計算量やIO量を削減できる M R RDD RDD RDD RDD
  • 30. 30Copyright © 2014 NTT DATA Corporation Sparkのエコシステムのひとつ「MLlib」 • Sparkの目標のひとつはコアとなる分散処理エン ジンを中心に据え、それを活用するためのライブラ リを充実させること • 機械学習ライブラリ「MLlib」はそのひとつ Apache Spark Core (分散処理エンジン) Spark SQL Spark Streaming MLlib GraphX Sparkアプリ内で SQL/HQLを 利用できる ストリーム処理を マイクロバッチ方式で実現 Sparkアプリ内で 機械学習を 利用できる Sparkアプリ内で グラフ処理を 利用できる
  • 31. 31Copyright © 2014 NTT DATA Corporation  プログラミングインターフェイス  Scala/Java/Pythonでプログラミング可能  ポピュラーな機械学習アルゴリズム  分類(SVM、ロジスティック回帰、ナイーブベイズ、デシジョンツリー)  線形回帰(最小二乗法/Lasso/Ridge)  協調フィルタリング(ALS)  クラスタリング(KMeans)  次元削減処理  SVD(特異値分解)  PVA(主成分分析)  前処理用のライブラリ  TF-IDF  カイ二乗検定  共分散行列計算  サンプリング  テスト用のランダムなデータ生成 MLlibが提供する道具の一例
  • 32. 32Copyright © 2014 NTT DATA Corporation  プログラミングインターフェイス  Scala/Java/Pythonでプログラミング可能  ポピュラーな機械学習アルゴリズム  分類(SVM、ロジスティック回帰、ナイーブベイズ、デシジョンツリー)  線形回帰(最小二乗法/Lasso/Ridge)  協調フィルタリング(ALS)  クラスタリング(KMeans)  次元削減処理  SVD(特異値分解)  PVA(主成分分析)  前処理用のライブラリ  TF-IDF  カイ二乗検定  共分散行列計算  サンプリング  テスト用のランダムなデータ生成 MLlibが提供する道具の一例 時期安定バージョンのSpark 1.2.0からは、MLlib の後継となるSpark MLのα版パッケージがMLlib に付属する形で同梱される
  • 33. 33Copyright © 2014 NTT DATA Corporation MLlibのコード例(KMeans学習部分@Scala) 学習用データをベクタデータに 変換し、更にRDDに変換 学習用データは何度も読み込む ので、メモリ上にキャッシュしておく 学習 大まかに、 • 学習データを特徴ベクトルに変換する • 特徴ベクトル群をSparkの共通的な分散コレクション「RDD」に変換する • 学習ベクトルを表したRDDは反復のたびに何度も使用するのでキャッシュしておく • 生成したRDDをもとに学習させる の流れでモデルを作る
  • 34. 34Copyright © 2014 NTT DATA Corporation MLlibのコード例(KMeans学習部分@Java) 学習データからRDDを作成 学習
  • 35. 35Copyright © 2014 NTT DATA Corporation MLlibのコード例(KMeans学習部分@Java) これはSpark 0.9まで またはJava7までの書き方!
  • 36. 36Copyright © 2014 NTT DATA Corporation MLlibのコード例(KMeans学習部分@Java8) Spark 1.0以降ではラムダ式で すっきり記述できる 学習データからRDDを作成 学習
  • 37. 37Copyright © 2014 NTT DATA Corporation Spark+MLlibでKMeansを実行してみる デモ Spark+MLlibでKMeansを動作させ、挙動を観察する MLlibのスピード感を体感してみよう
  • 38. 38Copyright © 2014 NTT DATA Corporation Spark+MLlibでKMeansを実行してみる Mahout+Hadoop MapReduceの場合と比較して、収 束のための反復処理が早々に終了した。なぜ? Mahoutの場合と同様、 KMeansがSparkでどのように処理されるのか観察する
  • 39. 39Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD HDFS ジョブ ・・・ 変換 学習用 データ RDD RDDの複数回の変 換が特徴空間の 点同士の距離計 算や重心の計算 に対応
  • 40. 40Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD HDFS ジョブ ・・・ 変換 学習用 データ RDD 学習用データは何度も 読み込むのでキャッシュ する RDDの複数回の変 換が特徴空間の 点同士の距離計 算や重心の計算 に対応
  • 41. 41Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD RDD ジョブ ・・・ RDD ・・・ 計算結果が収束するか、指 定された回数まで同様の計 算を実行する 変換 HDFS 学習用 データ 学習用データは何度も 読み込むのでキャッシュ する 反復過程 のモデル RDDの複数回の変 換が特徴空間の 点同士の距離計 算や重心の計算 に対応
  • 42. 42Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD RDD ジョブ ・・・ RDD ・・・ 計算結果が収束するか、指 定された回数まで同様の計 算を実行する 変換 HDFS 学習用 データ 学習用データは何度も 読み込むのでキャッシュ する 2回目以降の反復では、 学習用データは都度 HDFSから読み込まず、 キャッシュを利用できる 反復過程 のモデル 最終結果の モデル RDDの複数回の変 換が特徴空間の 点同士の距離計 算や重心の計算 に対応
  • 43. 43Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD RDD ジョブ ・・・ RDD ・・・ 計算結果が収束するか、指 定された回数まで同様の計 算を実行する RDDの複数回の変 換が特徴空間の 点同士の距離計 算や重心の計算 に対応 変換 HDFS 学習用 データ 学習用データは何度も 読み込むのでキャッシュ する 2回目以降の反復では、 学習用データは都度 HDFSから読み込まず、 キャッシュを利用できる 反復過程 のモデル 最終結果の モデル 反復間でネット ワーク転送が発 生するのは、反 復過程のモデ ルなど最低限に 抑えられる
  • 44. 44Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD RDD ジョブ ・・・ RDD ・・・ 計算結果が収束するか、指 定された回数まで同様の計 算を実行する RDDの複数回の変 換が特徴空間の 点同士の距離計 算や重心の計算 に対応 変換 HDFS 学習用 データ 学習用データは何度も 読み込むのでキャッシュ する 2回目以降の反復では、 学習用データは都度 HDFSから読み込まず、 キャッシュを利用できる 反復過程 のモデル 最終結果の モデル 反復間でネット ワーク転送が発 生するのは、反 復過程のモデ ルなど最低限に 抑えられる 一連の反復が 1つのジョブで 表現される
  • 45. 45Copyright © 2014 NTT DATA Corporation KMeansはSparkでどのように処理されるか RDD RDD RDD HDFS ジョブ ・・・ RDD ・・・ 計算結果が収束するか、指 定された回数まで同様の計 算を実行する 反復ごとのデータの受け渡し にはHDFSを介さない RDDの複数回の変換が特徴 空間の点同士の距離計算や 重心の計算に対応 KMeansの実行プロセスからSpark+MLlibの特徴をまとめると・・・  複数回の反復処理を1回のジョブとして定義できるので、ジョブ起 動に関わるオーバーヘッドがジョブ全体に占める割合が小さくなる  キャッシュ機構を活用することで、反復ごとに学習データをHDFSか ら読みだす必要がなく、IOのオーバーヘッドを削減できる  反復処理間でのデータ交換に関わるネットワーク転送やディスクIO が最低限に抑えられるようにスケジューリングが工夫されている 反復処理全体のレイテンシを 小さくすることに貢献している
  • 46. Copyright © 2014 NTT DATA Corporation 46 機械学習の活用を加速する仕組み
  • 47. 47Copyright © 2014 NTT DATA Corporation  Sparkには試行錯誤のための道具がそろっている Sparkに付属するインタラクティブシェルで、試行錯誤しながら パラメータのチューニングや使用するアルゴリズムの選定など、 試行錯誤の回転率を上げることができる  MLlibはSparkプロジェクトに包含されたエコシステムで ある Sparkプロジェクトに包含されているほかのエコシステムとの連 携が容易 - Spark Streaming+MLlibでオンライン機械学習 - Spark SQLで作成したテーブルデータを機械学習で活用 機械学習の活用を加速する
  • 48. 48Copyright © 2014 NTT DATA Corporation Map Reduce Spark MLlibなど HDFS分散ファイルシステム YARN分散リソース管理基盤 分散処理フレームワーク そのほかの フレームワーク フレームワーク間でデータを共有可能 Hive/Pig・・・高レベルライブラリ/ツール 分散処理フレームワーク間で連携が可能 YARN上のフレームワーク間でデータの共有や処理系の使い分けによって、  もともと機械学習とは別の目的で利用していたデータを機械学習に活用  クラスタのメモリの総量におさまらないような大量の未整形データを、従来の MapReducedで処理し、Spark+MLlibでの機械学習に適した形に成形 などが可能になる
  • 49. 49Copyright © 2014 NTT DATA Corporation  大量データを扱う上での従来の機械学習ライブラリの課題と分 散処理基盤「Hadoop」が切り開いた道  リーズナブルにスケールアウト可能な処理系が必要であり、Hadoop がそれを可能にした  Hadoopが苦手とする処理とHadoopによる機械学習  反復処理をMapReduceで表現すると多段のジョブ構成になるが、 ジョブが多段になると処理全体のレイテンシが大きくなる  Spark+MLlibが解決した従来の機械学習ライブラリの課題  Hadoopの仕組みの活用でスケーラブルな機械学習を可能にした  複雑な処理のレイテンシを小さくする工夫で反復処理を高速化した  機械学習の活用を加速するしくみ  Sparkには試行錯誤しやすい仕組みが備わっている  Sparkのエコシステム間連携や、分散処理フレームワーク間連携に よって、機械学習の活用の幅出しが可能 まとめ
  • 50. 50Copyright © 2014 NTT DATA Corporation 【余談】その後のMahout MahoutもSparkでの動作をサポートするようです
  • 51. Copyright © 2011 NTT DATA Corporation Copyright © 2014 NTT DATA Corporation お問い合わせ先: 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス URL: http://oss.nttdata.co.jp/hadoop メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496 ご清聴ありがとうございました