SlideShare a Scribd company logo
takemikamiʼs note ‒ http://takemikami.com/
MapReduceによる
Connected Components(連結成分)の⾒つけ⽅
Copyright (C) Takeshi Mikami. All rights reserved. 1
三上 威 - @takemikami
アーリース情報技術株式会社 代表取締役 社⻑
2020.5.28
takemikamiʼs note ‒ http://takemikami.com/
はじめに
•テーマ
• MapReduceによる
Connected Components(連結成分)の⾒つけ⽅
•内容
• Connected Componentsとは何か
• Connected Componentsのアルゴリズム
• 性能改善のために
Copyright (C) Takeshi Mikami. All rights reserved. 2
この資料で説明する内容について⽰します
takemikamiʼs note ‒ http://takemikami.com/
Connected Componentsとは何か
Copyright (C) Takeshi Mikami. All rights reserved. 3
takemikamiʼs note ‒ http://takemikami.com/
Connected Components(連結成分)とは
• Connected Componentとは、
• 右のグラフで考えると、
3つのConnected Componentsがある
• a, b, d, e
• c, f, g, h, j
• i, k, l, m
Copyright (C) Takeshi Mikami. All rights reserved. 4
Connected Componentsとは何かを説明します
a b
d e
g h
f
c
j
k l
i
m
互いに接続される辺を持たない部分グラフ
(辺による接続で到達可能な頂点の集合)
Connected ComponentsConnected ComponentsConnected Components
takemikamiʼs note ‒ http://takemikami.com/
DataFrameでのグラフの表現⽅法 1/2
Copyright (C) Takeshi Mikami. All rights reserved. 5
DataFrameによるグラフの表現⽅法を⽰します
a b
d e
g h
f
c
j
k l
i
m
頂点1 頂点2
a b
a d
b e
c f
d e
f h
: :
頂点
a
b
c
d
e
f
:
• DataFrameでは
無向グラフを「頂点の集合」「辺の集合」で表現
頂点の集合 辺の集合
takemikamiʼs note ‒ http://takemikami.com/
DataFrameでのグラフの表現⽅法 2/2
• DataFrameでは
Connected Componentsを「頂点とConnected Componentの組」で表現
Copyright (C) Takeshi Mikami. All rights reserved. 6
DataFrameによるグラフの表現⽅法を⽰します
Connected Components
頂点 Connected
Component
a 1
b 1
c 2
d 1
e 1
: :
a b
d e
g h
f
c
j
k l
i
m
→以降のスライドで
「頂点・辺の集合」から「頂点とConnected Componentの組」の求め⽅を説明
Connected Component 1
Connected Component 2
Connected Component 3
takemikamiʼs note ‒ http://takemikami.com/
Connected Componentsのアルゴリズム
Copyright (C) Takeshi Mikami. All rights reserved. 7
takemikamiʼs note ‒ http://takemikami.com/
アルゴリズムの基本的な考え⽅ 1/2
Copyright (C) Takeshi Mikami. All rights reserved. 8
アルゴリズムの基本的な考え⽅を⽰します
1
8
5
7
9
1
8
5
7
9
変換3 3
• Connected Componentsは以下の考え⽅で求める
Component内で最も⼩さなIDの頂点が、
他の頂点と接続されるグラフに変換
最⼩IDの頂点
takemikamiʼs note ‒ http://takemikami.com/
アルゴリズムの基本的な考え⽅ 2/2
• 変換は、small/large-star操作が収束するまで繰り返すことで⾏う
Copyright (C) Takeshi Mikami. All rights reserved. 9
アルゴリズムの基本的な考え⽅を⽰します
small-star操作: ある頂点に注⽬し、その頂点より⼤きいIDを持つ頂点との接続を、最⼩のIDの頂点につなぎ替える
large-star操作: ある頂点に注⽬し、その頂点以下のIDを持つ頂点との接続を、最⼩のIDの頂点につなぎ替える
1
8
5
7
9
1
8
5
7
9
1
8
5
7
9
頂点⑧に注⽬したsmall/large-star操作
large-starsmall-star
takemikamiʼs note ‒ http://takemikami.com/
MapReduceによるsmall-star操作
Copyright (C) Takeshi Mikami. All rights reserved. 10
MapReduceによるsmall-star操作の流れを⽰します
頂点⑧に注⽬したsmall-star操作
Map ⟨u; v⟩:
if lv ≤ lu then
Emit ⟨u; v⟩.
else
Emit ⟨v; u⟩.
end if
Reduce ⟨u; N ⊆ Γ(u)⟩:
Let m = argmin v∈N∪{u} lv.
Emit ⟨v; m⟩ for all v ∈ N.
Reduce
u-v
8-1,5,7 → m=1 → 8-1, 1-1, 5-1, 7-1
9-8 → m=8 → 9-8
Map
u-v
1-8 → 8-1
5-8 → 8-5
7-8 → 8-7
8-9 → 9-8
1
8
5
7
9
• small-star操作の流れ
1
8
5
7
9
■⼊⼒・出⼒
辺の集合 (接続する頂点の組の集合)
■処理
1. Mapフェーズ
key=⼤きなID value=⼩さなID としてMap
2. keyでグルーピング
3. Reduceフェーズ
全てのID → グループ内の最⼩IDの組を出⼒
takemikamiʼs note ‒ http://takemikami.com/
MapReduceによるlarge-star操作
Copyright (C) Takeshi Mikami. All rights reserved. 11
MapReduceによるlarge-star操作の流れを⽰します
頂点⑧に注⽬したlarge-star操作
1
8
5
7
9
1
8
5
7
9
Map
u-v
1-8 → 1-8, 8-1
5-8 → 5-8, 8-5
7-8 → 7-8, 8-7
8-9 → 8-9, 9-8
Reduce
u-v
1-8 → m=1 → 8-1
5-8 → m=5 → 8-5
7-8 → m=7 → 8-7
8-1,5,7,8,9 → m=1 → 9-1
9-8 → m=8 → None
Map⟨u; v⟩:
Emit ⟨u; v⟩ and ⟨v; u⟩.
Reduce ⟨u;Γ(u)⟩:
Let m = argmin v∈Γ+(u) lv.
Emit ⟨v; m⟩ for all v where lv > lu.
• large-star操作の流れ
■⼊⼒・出⼒
辺の集合 (接続する頂点の組の集合)
■処理
1. Mapフェーズ
双⽅の頂点をkeyとしてMap
・key=ID① value=ID②
・key=ID② value=ID①
2. keyでグルーピング
3. Reduceフェーズ
グループ内の最⼩ID → keyより⼤きな全ID
の組を出⼒
takemikamiʼs note ‒ http://takemikami.com/
性能改善のために
Copyright (C) Takeshi Mikami. All rights reserved. 12
takemikamiʼs note ‒ http://takemikami.com/
性能改善の考え⽅
• small/large-star操作では、
辺の集合の⾃⼰結合を繰り返す
操作を繰り返すと、次数(接続する辺の数)が⾼い頂点が増える
Copyright (C) Takeshi Mikami. All rights reserved. 13
Connected Components の性能改善の考え⽅を⽰します
→頂点の次数に着⽬したJoin⽅法としてSkewed Joinを考える
a b
d e
g h
f
c
j
k l
i
m
a b
d e
g h
c
j
k l
i
m
f
変換
次数の⾼い頂点が
増える
takemikamiʼs note ‒ http://takemikami.com/
Skewed Joinとは
• Skewed Joinとは
Copyright (C) Takeshi Mikami. All rights reserved. 14
Skewed Joinとは何かを説明します
次数(keyに対して紐付くvalueの数)の⼤⼩によって、
Map/Merge Joinを組み合わせるJoin⽅法
・多数のvalueが紐付くkey → Map Join (Broadcast Join)
・少数のvalueが紐付くkey → Merge Join
※Map Joinの⽅が、keyのソートのコスト⼩さいので多数のvalueが紐付くレコードのJoinは効率が良い
同時に、少数のvalueが紐付くkeyをMerge Joinに振ることでビッグデータに対応する
takemikamiʼs note ‒ http://takemikami.com/
Skewed Joinの⼿続き
• small-star操作を例に説明します
Copyright (C) Takeshi Mikami. All rights reserved. 15
Skewed Joinの⼿続きを説明します
1
8
5
7
9
3
頂点1 頂点2
9 8
8 7
8 5
8 1
7 3
辺の集合想定するグラフ 次数の計算
頂点 次数
9 1
8 3
7 1
← Map Join
← Merge Join
← Merge Join
次数を算出して、
次数が⼤きい頂点をMap Join
次数が⼩さい頂点を Merge Join
takemikamiʼs note ‒ http://takemikami.com/
参考資料リスト
• 参考資料
• Raimondas Kiveris, et al. "Connected Components in MapReduce and Beyond"
2014.
https://dl.acm.org/doi/10.1145/2670979.2670997
• GraphFrames
http://graphframes.github.io/graphframes/docs/_site/
Copyright (C) Takeshi Mikami. All rights reserved. 16
本資料作成にあたって参考にした資料のリストです

More Related Content

More from Takeshi Mikami

HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
Takeshi Mikami
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
Takeshi Mikami
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Takeshi Mikami
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
Takeshi Mikami
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
Takeshi Mikami
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
Takeshi Mikami
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
Takeshi Mikami
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
Takeshi Mikami
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
Takeshi Mikami
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
Takeshi Mikami
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Takeshi Mikami
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
Takeshi Mikami
 
担当アイドルに反応してLチカさせる予測モデル開発
担当アイドルに反応してLチカさせる予測モデル開発担当アイドルに反応してLチカさせる予測モデル開発
担当アイドルに反応してLチカさせる予測モデル開発
Takeshi Mikami
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
 
Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方
Takeshi Mikami
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
 
アグリゲート・コンピューティング風IoTでの戦い方
アグリゲート・コンピューティング風IoTでの戦い方アグリゲート・コンピューティング風IoTでの戦い方
アグリゲート・コンピューティング風IoTでの戦い方
Takeshi Mikami
 
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
 
TensorFlowで遊びながら学んだ、はじめてのLED点滅
TensorFlowで遊びながら学んだ、はじめてのLED点滅TensorFlowで遊びながら学んだ、はじめてのLED点滅
TensorFlowで遊びながら学んだ、はじめてのLED点滅
Takeshi Mikami
 

More from Takeshi Mikami (20)

HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
 
担当アイドルに反応してLチカさせる予測モデル開発
担当アイドルに反応してLチカさせる予測モデル開発担当アイドルに反応してLチカさせる予測モデル開発
担当アイドルに反応してLチカさせる予測モデル開発
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
 
アグリゲート・コンピューティング風IoTでの戦い方
アグリゲート・コンピューティング風IoTでの戦い方アグリゲート・コンピューティング風IoTでの戦い方
アグリゲート・コンピューティング風IoTでの戦い方
 
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
 
TensorFlowで遊びながら学んだ、はじめてのLED点滅
TensorFlowで遊びながら学んだ、はじめてのLED点滅TensorFlowで遊びながら学んだ、はじめてのLED点滅
TensorFlowで遊びながら学んだ、はじめてのLED点滅
 

MapReduceによるConnected Components(連結成分)の見つけ方

  • 1. takemikamiʼs note ‒ http://takemikami.com/ MapReduceによる Connected Components(連結成分)の⾒つけ⽅ Copyright (C) Takeshi Mikami. All rights reserved. 1 三上 威 - @takemikami アーリース情報技術株式会社 代表取締役 社⻑ 2020.5.28
  • 2. takemikamiʼs note ‒ http://takemikami.com/ はじめに •テーマ • MapReduceによる Connected Components(連結成分)の⾒つけ⽅ •内容 • Connected Componentsとは何か • Connected Componentsのアルゴリズム • 性能改善のために Copyright (C) Takeshi Mikami. All rights reserved. 2 この資料で説明する内容について⽰します
  • 3. takemikamiʼs note ‒ http://takemikami.com/ Connected Componentsとは何か Copyright (C) Takeshi Mikami. All rights reserved. 3
  • 4. takemikamiʼs note ‒ http://takemikami.com/ Connected Components(連結成分)とは • Connected Componentとは、 • 右のグラフで考えると、 3つのConnected Componentsがある • a, b, d, e • c, f, g, h, j • i, k, l, m Copyright (C) Takeshi Mikami. All rights reserved. 4 Connected Componentsとは何かを説明します a b d e g h f c j k l i m 互いに接続される辺を持たない部分グラフ (辺による接続で到達可能な頂点の集合) Connected ComponentsConnected ComponentsConnected Components
  • 5. takemikamiʼs note ‒ http://takemikami.com/ DataFrameでのグラフの表現⽅法 1/2 Copyright (C) Takeshi Mikami. All rights reserved. 5 DataFrameによるグラフの表現⽅法を⽰します a b d e g h f c j k l i m 頂点1 頂点2 a b a d b e c f d e f h : : 頂点 a b c d e f : • DataFrameでは 無向グラフを「頂点の集合」「辺の集合」で表現 頂点の集合 辺の集合
  • 6. takemikamiʼs note ‒ http://takemikami.com/ DataFrameでのグラフの表現⽅法 2/2 • DataFrameでは Connected Componentsを「頂点とConnected Componentの組」で表現 Copyright (C) Takeshi Mikami. All rights reserved. 6 DataFrameによるグラフの表現⽅法を⽰します Connected Components 頂点 Connected Component a 1 b 1 c 2 d 1 e 1 : : a b d e g h f c j k l i m →以降のスライドで 「頂点・辺の集合」から「頂点とConnected Componentの組」の求め⽅を説明 Connected Component 1 Connected Component 2 Connected Component 3
  • 7. takemikamiʼs note ‒ http://takemikami.com/ Connected Componentsのアルゴリズム Copyright (C) Takeshi Mikami. All rights reserved. 7
  • 8. takemikamiʼs note ‒ http://takemikami.com/ アルゴリズムの基本的な考え⽅ 1/2 Copyright (C) Takeshi Mikami. All rights reserved. 8 アルゴリズムの基本的な考え⽅を⽰します 1 8 5 7 9 1 8 5 7 9 変換3 3 • Connected Componentsは以下の考え⽅で求める Component内で最も⼩さなIDの頂点が、 他の頂点と接続されるグラフに変換 最⼩IDの頂点
  • 9. takemikamiʼs note ‒ http://takemikami.com/ アルゴリズムの基本的な考え⽅ 2/2 • 変換は、small/large-star操作が収束するまで繰り返すことで⾏う Copyright (C) Takeshi Mikami. All rights reserved. 9 アルゴリズムの基本的な考え⽅を⽰します small-star操作: ある頂点に注⽬し、その頂点より⼤きいIDを持つ頂点との接続を、最⼩のIDの頂点につなぎ替える large-star操作: ある頂点に注⽬し、その頂点以下のIDを持つ頂点との接続を、最⼩のIDの頂点につなぎ替える 1 8 5 7 9 1 8 5 7 9 1 8 5 7 9 頂点⑧に注⽬したsmall/large-star操作 large-starsmall-star
  • 10. takemikamiʼs note ‒ http://takemikami.com/ MapReduceによるsmall-star操作 Copyright (C) Takeshi Mikami. All rights reserved. 10 MapReduceによるsmall-star操作の流れを⽰します 頂点⑧に注⽬したsmall-star操作 Map ⟨u; v⟩: if lv ≤ lu then Emit ⟨u; v⟩. else Emit ⟨v; u⟩. end if Reduce ⟨u; N ⊆ Γ(u)⟩: Let m = argmin v∈N∪{u} lv. Emit ⟨v; m⟩ for all v ∈ N. Reduce u-v 8-1,5,7 → m=1 → 8-1, 1-1, 5-1, 7-1 9-8 → m=8 → 9-8 Map u-v 1-8 → 8-1 5-8 → 8-5 7-8 → 8-7 8-9 → 9-8 1 8 5 7 9 • small-star操作の流れ 1 8 5 7 9 ■⼊⼒・出⼒ 辺の集合 (接続する頂点の組の集合) ■処理 1. Mapフェーズ key=⼤きなID value=⼩さなID としてMap 2. keyでグルーピング 3. Reduceフェーズ 全てのID → グループ内の最⼩IDの組を出⼒
  • 11. takemikamiʼs note ‒ http://takemikami.com/ MapReduceによるlarge-star操作 Copyright (C) Takeshi Mikami. All rights reserved. 11 MapReduceによるlarge-star操作の流れを⽰します 頂点⑧に注⽬したlarge-star操作 1 8 5 7 9 1 8 5 7 9 Map u-v 1-8 → 1-8, 8-1 5-8 → 5-8, 8-5 7-8 → 7-8, 8-7 8-9 → 8-9, 9-8 Reduce u-v 1-8 → m=1 → 8-1 5-8 → m=5 → 8-5 7-8 → m=7 → 8-7 8-1,5,7,8,9 → m=1 → 9-1 9-8 → m=8 → None Map⟨u; v⟩: Emit ⟨u; v⟩ and ⟨v; u⟩. Reduce ⟨u;Γ(u)⟩: Let m = argmin v∈Γ+(u) lv. Emit ⟨v; m⟩ for all v where lv > lu. • large-star操作の流れ ■⼊⼒・出⼒ 辺の集合 (接続する頂点の組の集合) ■処理 1. Mapフェーズ 双⽅の頂点をkeyとしてMap ・key=ID① value=ID② ・key=ID② value=ID① 2. keyでグルーピング 3. Reduceフェーズ グループ内の最⼩ID → keyより⼤きな全ID の組を出⼒
  • 12. takemikamiʼs note ‒ http://takemikami.com/ 性能改善のために Copyright (C) Takeshi Mikami. All rights reserved. 12
  • 13. takemikamiʼs note ‒ http://takemikami.com/ 性能改善の考え⽅ • small/large-star操作では、 辺の集合の⾃⼰結合を繰り返す 操作を繰り返すと、次数(接続する辺の数)が⾼い頂点が増える Copyright (C) Takeshi Mikami. All rights reserved. 13 Connected Components の性能改善の考え⽅を⽰します →頂点の次数に着⽬したJoin⽅法としてSkewed Joinを考える a b d e g h f c j k l i m a b d e g h c j k l i m f 変換 次数の⾼い頂点が 増える
  • 14. takemikamiʼs note ‒ http://takemikami.com/ Skewed Joinとは • Skewed Joinとは Copyright (C) Takeshi Mikami. All rights reserved. 14 Skewed Joinとは何かを説明します 次数(keyに対して紐付くvalueの数)の⼤⼩によって、 Map/Merge Joinを組み合わせるJoin⽅法 ・多数のvalueが紐付くkey → Map Join (Broadcast Join) ・少数のvalueが紐付くkey → Merge Join ※Map Joinの⽅が、keyのソートのコスト⼩さいので多数のvalueが紐付くレコードのJoinは効率が良い 同時に、少数のvalueが紐付くkeyをMerge Joinに振ることでビッグデータに対応する
  • 15. takemikamiʼs note ‒ http://takemikami.com/ Skewed Joinの⼿続き • small-star操作を例に説明します Copyright (C) Takeshi Mikami. All rights reserved. 15 Skewed Joinの⼿続きを説明します 1 8 5 7 9 3 頂点1 頂点2 9 8 8 7 8 5 8 1 7 3 辺の集合想定するグラフ 次数の計算 頂点 次数 9 1 8 3 7 1 ← Map Join ← Merge Join ← Merge Join 次数を算出して、 次数が⼤きい頂点をMap Join 次数が⼩さい頂点を Merge Join
  • 16. takemikamiʼs note ‒ http://takemikami.com/ 参考資料リスト • 参考資料 • Raimondas Kiveris, et al. "Connected Components in MapReduce and Beyond" 2014. https://dl.acm.org/doi/10.1145/2670979.2670997 • GraphFrames http://graphframes.github.io/graphframes/docs/_site/ Copyright (C) Takeshi Mikami. All rights reserved. 16 本資料作成にあたって参考にした資料のリストです