large-scale graph processing〜introduction〜(lt版)
DESCRIPTION
(※本スライドの内容は別途アップロードしている本番編から、LT用に加工した物になります。)グラフデータの大規模処理はMapReduceよりも効率の良い計算モデル が提案され、Google Pregel・Giraph・Hama・GoldenOrb等のプロジェクトにおいて実装 が進められています。またHamaやGiraphはNextGen Apache Hadoop MapReduceへ の対応が進められています。本LTでは"Large Scale Graph Processing"とはどのようなものをMap Reduceと比較して紹介するとともに、最後に各プロジェクトの特徴を挙げています。TRANSCRIPT
Large-Scale GraphProcessing
@doryokujinHadoop Conference Japan 2011 Fall
~Introduction~
・井上 敬浩(26歳)
・twitter: doryokujin
・データマイニングエンジニア
・MongoDB JP 代表
・Hadoop, MongoDB, GraphDB に関心
・マラソン2時間33分
自己紹介
@IT さんの9/15付のインタビュー記事でカッティング氏がGiraphについて言及
Hadoop MapReduce デザインパターン——MapReduceによる大規模テキストデータ処理
1 Jimmy Lin, Chris Dyer�著、神林 飛志、野村 直之�監修、玉川 竜司�訳
2 2011年10月01日 発売予定3 210ページ4 定価2,940円
MapReduceデザインパターン本の5章でグラフアルゴリズムが取り上げられている
Motivation: Why Graph?
Map Reduce
ではアカン?
Map Reduce
ではアカン?
1. Iteration の問題
2. Graph のデータ構造の問題
MR: Good For Simple Problems
Map
Map
Map
Reduce
Reduce
Map
HDFS
MR: Bad for Iterative Problems
Map
Map
Map
Reduce
Reduce
Map
HDFS
Map
Map
Map
Reduce
Reduce
Map
HDFS
Shuffle & barrier
job start/shutdown
イテレーション毎のデータロード
i i+1
B
C
D
E
F
GA
5
1
3
5
42
41
3
Is MR Fit for Graph Data?
B
C
D
E
F
GA
5
1
3
5
42
41
3
3
5
B
C
D
E
F
GA
5
1
3
5
42
41
3
5!4
3
3 2
min(6,4)
Graph Processing = “Vertex Based Approach”
i
i+1
隣接するノード間のメッセージパッシングをMRでどう記述する?
Is MR Fit for Graph Data?
MapReduce 以外にええ
のんあるんでっか?
MapReduce 以外にええ
のんあるんでっか?
BSP: Bulk Synchronous Parallel
BSP: Bulk Synchronous Parallel
a super step
http://en.wikipedia.org/wiki/Bulk_Synchronous_Parallel
BSP: Bulk Synchronous Parallel
1. Local Computation: 各Processorがローカルデータに対して独立した処理を行う
2. Communication: Processor 間でメッセージパッシングを行う
3. Barrier Synchronisation:全Processorのメッセージパッシングが完了するまで待機。
1.~3. の “super step” のイテレーション
...
Relation: MR and BSP
Local Computation= Map Phase
Communication + Barrier = Shuffle and Sort Phase
Aggregation or (next) Local Computation
= Reduce Phase
a super step
BSP Iterative MR
MR
Relation: MR and BSP
Graph, Matrix, MachineLearning
BSP Iterative MR
MRGraph Processing
Matrix Computation
Machine Leaning ※1
※1 多くのMachine Learning ModelはMapReduceで記述可能なことが証明されている
・2009年6月に Google が発表
- BSP を Graph Processing に応用
- 大規模データの80%をMapReduceで、20%をPregelで
- 10億node, 800億edgeのグラフをPC480台で並列処理、最短経路問題を200秒で解く
- YouTube の Graph-Based Recommendations で使われてるれているらしい
- 論文も入手可能
Google Pregel
Map: BSP to Graph ProcessingLocal Computation
-> [頂点へのユーザ定義関数] Compute()
Communication -> 隣接するノードへメッセー
ジパッシング
Barrier synchronisation-> 全ノードのメッセージパッシングが終了するまで待機
a super step
どっちがええのか比較せなあかんがな
SSSP: Single Source Shortest Paths
SSSP: Parallel BFS
MapReduce & Pregel
※ SSSP: Single Source Shortest Paths, BFS: Breadth First Search
SSSP: Parallel BFS
MapReduce & Pregel
※ SSSP: Single Source Shortest Paths, BFS: Breadth First Search
SSSP: MapReduce Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
initialize
・Load: Adjacency ListA: <(B,5),(D,3)>
B: <(E,1)>
C: <(F,5)>
D: <(B,1),(C,3),(E,4),(F,2)>
E: <>
F: <(G,4)>
G: <>
Source
B
C
D
E
F
GA
5
1
3
5
42
41
3
+∞
1
+∞
+∞
+∞+∞
+∞0
・Map Input: [Graph Structure]- <A: <0, (B,5),(D,3)>>
- <B: <∞, (E,1)>>
- <C: <∞, (F,5)>>
- <D: <∞, (B,1),(C,3),(E,4),(F,2)>>
- <E: <∞>>
- <F: <∞, (G,4)>>
- <G: <∞>>
SSSP: MapReduce Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
+∞
1
+∞
+∞
+∞+∞
+∞0
・Map Output:- (B,5),(D,3), <A: <0, (B,5),(D,3)>>
- (E,∞), <B: <∞, (E,1)>>
- (F,∞), <C: <∞, (F,5)>>
- (B,∞),(C,∞),(E,∞),(F,∞),
<D: <∞, (B,1),(C,3),(E,4),(F,2)>>
- <E: <∞>>
- (G,∞), <F: <∞, (G,4)>>
- <G: <∞>>
SSSP: MapReduce ModelGraph 構造もReducerに送信
Local Disk のFlush
B
C
D
E
F
GA
5
1
3
5
42
41
3
+∞
1
+∞
+∞
+∞+∞
+∞0
・Reduce Input:[A] - <A: <0, (B,5),(D,3)>>
[B] - (B,5),(B,∞), <B: <∞, (E,1)>>
[C] - (C,∞), <C: <∞, (F,5)>>
[D] - (D,3),
<D: <∞, (B,1),(C,3),(E,4),(F,2)>>
[E] - (E,∞),(E,∞), <E,<∞>>
[F] - (F,∞),(F,∞), <F: <∞, (G,4)>>
[G] - (G,∞), <G: <∞>>
SSSP: MapReduce Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
5
1
+∞
+∞
+∞+∞
30
SSSP: MapReduce Model
・Reduce Process:[A] - <A: <0, (B,5),(D,3)>>
[B] - (B,5),(B,∞), <B: <∞, (E,1)>>
[C] - (C,∞), <C: <∞, (F,5)>>
[D] - (D,3),
<D: <∞, (B,1),(C,3),(E,4),(F,2)>>
[E] - (E,∞),(E,∞), <E,<∞>>
[F] - (F,∞),(F,∞), <F: <∞, (G,4)>>
[G] - (G,∞), <G: <∞>>Reduce後、HDFS のフラッシュ
B
C
D
E
F
GA
5
1
3
5
42
41
3
5
2
+∞
+∞
+∞+∞
30
SSSP: MapReduce Model
・Map Input (Reduce Output):- <A: <0, (B,5),(D,3)>>
- <B: <5, (E,1)>>
- <C: <∞, (F,5)>>
- <D: <3, (B,1),(C,3),(E,4),(F,2)>>
- <E,<∞>>
- <F: <∞, (G,4)>>
- <G: <∞>>
SSSP: MapReduce Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
5
2
+∞
+∞
+∞+∞
30
・Map Output:- (B,5),(D,3), <A: <0, (B,5),(D,3)>>
- (E,6), <B: <5, (E,1)>>
- (F,∞), <C: <∞, (F,5)>>
- (B,4),(C,6),(E,7),(F,5), <D: <3, (B,1),(C,3),(E,4),(F,2)>>
- <E,<∞>>
- (G,∞), <F: <∞, (G,4)>>
- <G: <∞>>Local Disk のFlush
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
2
6
+∞
56
30
・Reduce Process:[A] - <A: <0, (B,5),(D,3)>>
[B] - (B,5),(B,4), <B: <5, (E,1)>>
[C] - (C,6), <C: <∞, (F,5)>>
[D] - (D,3),
<D: <3, (B,1),(C,3),(E,4),(F,2)>>
[E] - (E,6),(E,7), <E, <∞>>
[F] - (F,∞),(F,5), <F: <∞, (G,4)>>
[G] - (G,∞), <G: <∞>>
SSSP: MapReduce Model
Reduce後、HDFS のフラッシュ
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
3
6
+∞
56
30
・Map Input (Reduce Output):- <A: <0, (B,5),(D,3)>>
- <B: <4, (E,1)>>
- <C: <6, (F,5)>>
- <D: <3, (B,1),(C,3),(E,4),(F,2)>>
- <E: <6>>
- <F: <5, (G,4)>>
- <G: <∞>>
SSSP: MapReduce Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
3
6
+∞
56
30
・Map Output:- (B,5),(D,3), <A: <0, (B,5),(D,3)>>
- (E,5), <B: <4, (E,1)>>
- (F,11), <C: <6, (F,5)>>
- (B,4),(C,6),(E,7),(F,5),
<D: <3, (B,1),(C,3),(E,4),(F,2)>>
- <E: <6>>
- (G,9), <F: <5, (G,4)>>
- <G: <∞>>
SSSP: MapReduce Model
Local Disk のFlush
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
3
5
9
56
30
・Reduce Process:[A] - <A: <0, (B,5),(D,3)>>
[B] - (B,5),(B,4), <B: <4, (E,1)>>
[C] - (C,6), <C: <6, (F,5)>>
[D] - (D,3),
<D: <3, (B,1),(C,3),(E,4),(F,2)>>
[E] - (E,5), (E,7), <E, <6>>
[F] - (F,5),(F,11), <F: <5, (G,4)>>
[G] - (G,9), <G: <∞>>
SSSP: MapReduce Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
end
5
9
56
30
SSSP: MapReduce Model
SSSP: Parallel BFS
MapReduce & Pregel
※ SSSP: Single Source Shortest Paths, BFS: Breadth First Search
SSSP: Pregel Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
+∞
1
+∞
+∞
+∞+∞
+∞0
P1 P2 P1 P2Compute()
Comupte():Vertexの値と前回のステップからの
メッセージを元に計算
B
C
D
E
F
GA
5
1
3
5
42
41
3
+∞
1
+∞
+∞
+∞+∞
+∞0
P1 P2 P1 P2Compute()
Communicate
SSSP: Pregel Model
Communicate:更新した値を矢線の出る方のノード
へメッセージパッシング
B
C
D
E
F
GA
5
1
3
5
42
41
3
+∞
1
+∞
+∞
+∞+∞
+∞0
P1 P2 P1 P2Compute()
CommunicateBarrier
SSSP: Pregel Model
Barrier:全てのノードへメッセージパッシン
グが終了するまで待機
B
C
D
E
F
GA
5
1
3
5
42
41
3
5
2
+∞
+∞
+∞+∞
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()
SSSP: Pregel Model
Compute():Vertexの値と前回のステップからの
メッセージを元に計算
B
C
D
E
F
GA
5
1
3
5
42
41
3
5
2
+∞
+∞
+∞+∞
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
Barrier
SSSP: Pregel Model
Communicate & Barrier:更新した値を矢線の出る方のノードへメッセージパッシング、待機
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
3
6
+∞
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
SSSP: Pregel Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
3
6
+∞
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
CommunicateBarrier
SSSP: Pregel Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
4
5
9
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
CommunicateBarrier
Compute()
SSSP: Pregel Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
4
5
9
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
CommunicateBarrier
Compute()Communicate
Barrier
SSSP: Pregel Model
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
5
5
9
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
CommunicateBarrier
Compute()Communicate
Barrier
SSSP: Pregel Model
Compute()
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
5
5
9
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
CommunicateBarrier
Compute()Communicate
Barrier
SSSP: Pregel Model
Compute()Communicate
Barrier
B
C
D
E
F
GA
5
1
3
5
42
41
3
4
end
5
9
56
30
P1 P2 P1 P2Compute()
CommunicateBarrier
Compute()Communicate
BarrierCompute()
CommunicateBarrier
Compute()Communicate
Barrier
SSSP: Pregel Model
Compute()Communicate
BarrierTerminate
・MapReduce:- “Dence” なグラフに対する処理は苦手- ネットワーク通信は状態とグラフ構造- (基本的な問題に関しては最適化可能)
・Pregel:- シンプルなアルゴリズム- ネットワーク通信はメッセージのみ
MapReduce v.s. Pregel大規模グラフデータの場合のネットワークコストは莫大
シンプルさは重要:そもそもアルゴリズムを考案、実
装できるか
現在使用できるライブラリはあるのん?
1. Apache Hama2. Apache Giraph3. GoldenOrb
Hama GoldenOrb Giraph
Logo
API BSP Pregel(Graph) Pregel(Graph)
NextGen MR 対応 ? 対応
Lincense Apache Apache Apache
Infrastructure 必要 必要 不要(on Hadoop)
Hama, GoldenOrb, Giraph
Hama GoldenOrb Giraph
Logo
API BSP Pregel(Graph) Pregel(Graph)
NextGen MR 対応 ? 対応
Lincense Apache Apache Apache
Infrastructure 必要 必要 不要(on Hadoop)
Hama, GoldenOrb, Giraph
YARN 対応!
HamaはBSP全般を扱う
Hadoop上でのMapのイテレーション
Pregelに準拠したGraphAPI
データの多様性の増大と共に計算モデルの多様化も
進む
データを見る目と、適切なツール・モデルを選択する能力が求められる時代に!
ありがとうございました
@doryokujinHadoop Conference Japan 2011 Fall