25
2015/05/26 김김김 ([email protected]) 김김김 ([email protected]) Graph Analytics in Spark

스사모 테크톡 - GraphX

Embed Size (px)

Citation preview

Page 1: 스사모 테크톡 - GraphX

2015/05/26김상우 ([email protected])정향민 ([email protected])

Graph Analytics in Spark

Page 2: 스사모 테크톡 - GraphX

소셜 네트워크

사람과 사람 , 사람과 SNS 와의 관계

Page 3: 스사모 테크톡 - GraphX

월드와이드웹

하이퍼링크로 연결된 웹 페이지

Page 4: 스사모 테크톡 - GraphX

Graph

Vertices + Edges Graph

Vertex• 사람• 웹 페이지• …

Edge• 인간 관계• 하이퍼링크 • …

Degree: Vertex 에 연결된 Edge 수 방향성 존재 가능

Degree:4

Page 5: 스사모 테크톡 - GraphX

PageRank

Graph 에서 중요한 vertex 를 찾는 방법유저가 하이퍼링크를 따라 사이트를 방문하거나 ,

임의로 사이트를 방문하는 경우에 가장 중요한 website 를 찾는 방법

Page 6: 스사모 테크톡 - GraphX

PageRank

Graph 에서 중요한 vertex 를 찾는 방법유저가 하이퍼링크를 따라 사이트를 방문하거나 ,

임의로 사이트를 방문하는 경우에 가장 중요한 website 를 찾는 방법

Page 7: 스사모 테크톡 - GraphX

Triangle Counting

선택된 vertex 를 기준으로 삼각형 개수 확인

Page 8: 스사모 테크톡 - GraphX

Triangle Counting

선택된 vertex 를 기준으로 삼각형 개수 확인

Page 9: 스사모 테크톡 - GraphX

Graph 분석 방식

Graph 분석은 선택된 vertex 와 vertex 의 이웃으로만 분석 함

Page 10: 스사모 테크톡 - GraphX

Graph 분석 방식

Graph 분석은 선택된 vertex 와 vertex 의 이웃으로만 분석 함

Page 11: 스사모 테크톡 - GraphX

Table vs. Graph

Table Graph

Dependency Graph

Pregel

Table

Result

Row

Row

Row

Row

출처 : UC Berkerley Lab

Page 12: 스사모 테크톡 - GraphX

Graph 저장 형태

B C

A D

F E

A DD

Property Graph

B C

D

E

AA

F

출처 : UC Berkerley Lab

Page 13: 스사모 테크톡 - GraphX

Graph 저장 형태Vertex Table (RDD)

B C

A D

F E

A DD

Property Graph

A

B

C

D

E

A

F

출처 : UC Berkerley Lab

Page 14: 스사모 테크톡 - GraphX

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

Page 15: 스사모 테크톡 - GraphX

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

Page 16: 스사모 테크톡 - GraphX

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

Page 17: 스사모 테크톡 - GraphX

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

Page 18: 스사모 테크톡 - GraphX

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)

Page 19: 스사모 테크톡 - GraphX

GraphX 예제 (1/3)

Vertex Id 는 숫자형 (int, double, … ) 만 지원함source destination attribute

Page 20: 스사모 테크톡 - GraphX

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)

Page 21: 스사모 테크톡 - GraphX

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))

Page 22: 스사모 테크톡 - GraphX

PageRank Benchmark

Good!

출처 : UC Berkerley Lab

Page 23: 스사모 테크톡 - GraphX

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

Page 24: 스사모 테크톡 - GraphX

GraphX

• Vertex 와 edge 로 이루어진 graph 분석관계 분석Graph 분석은 Hadoop 이나 Naïve Spark 보다

빠름

• Map/Reduce 보다 복잡한 분석

• 앞으로의 발전 계획다양한 알고리즘시간에 따라 변하는 graph 분석

Page 25: 스사모 테크톡 - GraphX

Q&A