Upload
sangwoo-kim
View
1.019
Download
6
Embed Size (px)
Citation preview
2015/05/26김상우 ([email protected])정향민 ([email protected])
Graph Analytics in Spark
소셜 네트워크
사람과 사람 , 사람과 SNS 와의 관계
월드와이드웹
하이퍼링크로 연결된 웹 페이지
Graph
Vertices + Edges Graph
Vertex• 사람• 웹 페이지• …
Edge• 인간 관계• 하이퍼링크 • …
Degree: Vertex 에 연결된 Edge 수 방향성 존재 가능
Degree:4
PageRank
Graph 에서 중요한 vertex 를 찾는 방법유저가 하이퍼링크를 따라 사이트를 방문하거나 ,
임의로 사이트를 방문하는 경우에 가장 중요한 website 를 찾는 방법
PageRank
Graph 에서 중요한 vertex 를 찾는 방법유저가 하이퍼링크를 따라 사이트를 방문하거나 ,
임의로 사이트를 방문하는 경우에 가장 중요한 website 를 찾는 방법
Triangle Counting
선택된 vertex 를 기준으로 삼각형 개수 확인
Triangle Counting
선택된 vertex 를 기준으로 삼각형 개수 확인
Graph 분석 방식
Graph 분석은 선택된 vertex 와 vertex 의 이웃으로만 분석 함
Graph 분석 방식
Graph 분석은 선택된 vertex 와 vertex 의 이웃으로만 분석 함
Table vs. Graph
Table Graph
Dependency Graph
Pregel
Table
Result
Row
Row
Row
Row
출처 : UC Berkerley Lab
Graph 저장 형태
B C
A D
F E
A DD
Property Graph
B C
D
E
AA
F
출처 : UC Berkerley Lab
Graph 저장 형태Vertex Table (RDD)
B C
A D
F E
A DD
Property Graph
A
B
C
D
E
A
F
출처 : UC Berkerley Lab
Graph 저장 형태Vertex Table (RDD)
Property GraphEdge Table
(RDD)
A B
A C
C D
B C
A E
A F
E F
E D
B
C
D
E
A
F
출처 : UC Berkerley Lab
Part. 2
Part. 1
B C
A D
F E
A D
Graph 저장 형태
Part. 2
Part. 1
Vertex Table (RDD)
B C
A D
F E
A D
Property GraphEdge Table
(RDD)
A B
A C
C D
B C
A E
A F
E F
E D
B
C
D
E
A
F
RoutingTable (RDD)
B
C
D
E
A
F
1
2
1 2
1 2
1
2
출처 : UC Berkerley Lab
Vertex Table (RDD)
GraphX 의 분석 과정Edge Table
(RDD)
A B
A C
C D
B C
A E
A F
E F
E D
MirrorCache
B
C
D
A
MirrorCache
D
E
F
A
B
C
D
E
A
F
출처 : UC Berkerley Lab
Vertex Table (RDD)
Edge Table (RDD)
A B
A C
C D
B C
A E
A F
E F
E D
MirrorCache
B
C
D
A
MirrorCache
D
E
F
A
GraphX의 분석 과정
B
C
D
E
A
F
Change
Change
출처 : UC Berkerley Lab
Vertex Table (RDD)
Edge Table (RDD)
A B
A C
C D
B C
A E
A F
E F
E D
MirrorCache
B
C
D
A
MirrorCache
D
E
F
A
GraphX의 분석 과정
B
C
D
E
A
F
Sca
n
Change
Change
Change
Change
LocalAggregate
LocalAggregate
B
C
D
F
출처 : UC Berkerley LabVertex Table (RDD)
GraphX 예제 (1/3)
Vertex Id 는 숫자형 (int, double, … ) 만 지원함source destination attribute
GraphX 예제 (2/3) import org.apache.spark._ import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD
//vertices RDD 생성val users: RDD[(VertexId, (String, String))] = sc.parallelize(Array((3L, ("rxin", "student")), (7L, ("jgonzal", "postdoc")), (5L, ("franklin", "prof")),
(2L, ("istoica", "prof"))))
//Edge RDD 생성val relationships: RDD[Edge[String]] = sc.parallelize(Array(Edge(3L, 7L, "collab"), Edge(5L, 3L, "advisor"), Edge(2L, 5L, "colleague"), Edge(5L, 7L, "pi")))//graph 생성val graph = Graph(users, relationships)
GraphX 예제 (3/3)graph.degrees.collectArray[(org.apache.spark.graphx.VertexId, Int)] = Array((2,1), (3,2), (5,3), (7,2))
graph.edges.collectArray[org.apache.spark.graphx.Edge[String]] = Array(Edge(3,7,collab), Edge(5,3,advisor), Edge(2,5,colleague), Edge(5,7,pi))
graph.vertices.collectArray[(org.apache.spark.graphx.VertexId, (String, String))] = Array((2,(istoica,prof)), (3,(rxin,student)), (5,(franklin,prof)), (7,(jgonzal,postdoc)))
graph.pageRank(0.1, 0.15).vertices.collectArray[(org.apache.spark.graphx.VertexId, Double)] = Array((2,0.15), (3,0.2679375), (5,0.2775), (7,0.3954375))
graph.triangleCount.vertices.collectArray[(org.apache.spark.graphx.VertexId, Int)] = Array((2,0), (3,1), (5,1), (7,1))
PageRank Benchmark
Good!
출처 : UC Berkerley Lab
Graph-Parallel 분석• Collaborative Filter-
ing Alternating Least
Squares Stochastic Gradient
Descent Tensor Factorization
• Graph Analytics PageRank Triangle-Counting Shortest Path
• Community Detec-tion Triangle-Counting K-core Decomposi-
tion K-Truss Label Propagation
• Classification Neural Networks
GraphX
• Vertex 와 edge 로 이루어진 graph 분석관계 분석Graph 분석은 Hadoop 이나 Naïve Spark 보다
빠름
• Map/Reduce 보다 복잡한 분석
• 앞으로의 발전 계획다양한 알고리즘시간에 따라 변하는 graph 분석
Q&A