Time-Evolving Graph Processing at Scale Anand Iyer # , Li Erran Li + - - PowerPoint PPT Presentation

time evolving graph
SMART_READER_LITE
LIVE PREVIEW

Time-Evolving Graph Processing at Scale Anand Iyer # , Li Erran Li + - - PowerPoint PPT Presentation

Time-Evolving Graph Processing at Scale Anand Iyer # , Li Erran Li + , Tathagata Das * , Ion Stoica #* # UC Berkeley + Uber Technologies * Databricks Motivation Dynamically evolving graphs prevalent in many domains Social networks (e.g.,


slide-1
SLIDE 1

Time-Evolving Graph Processing at Scale

Anand Iyer#, Li Erran Li+, Tathagata Das*, Ion Stoica#*

#UC Berkeley +Uber Technologies *Databricks

slide-2
SLIDE 2

Motivation

Dynamically evolving graphs prevalent in many domains

– Social networks (e.g., Twitter, Facebook) – Communication networks (e.g. cellular networks) – Internet-of-Things

slide-3
SLIDE 3

Motivation

Many applications need to leverage the evolution characteristics

– Product recommendations – Network troubleshooting – Real-time ad placement

slide-4
SLIDE 4

Motivation

Lots of interest in distributed graph processing…

– GraphX, Girafe, Powergraph, GraphLab, GraphChi, Chaos, …

…but existing graph processing engines offer little support for dynamic graphs

– Some specialized systems exist. E.g., Kineograph, Chronos, not generic enough

slide-5
SLIDE 5

Challenges

  • Consistent & fault-tolerant snapshot

generation

  • Co-ordinate snapshot generation and

computation

  • Window operations on snapshots
  • Mix data and graph parallel computations

Existing solutions do not satisfy all the requirements

slide-6
SLIDE 6

GraphTau

Abstraction Computational Model

a e d c a b e d c a b e d c f

slide-7
SLIDE 7

GraphTau

a e d c a b e d c f a b e d c t1 t2 t3

GraphTau represents time-evolving graphs as a series of consistent graph snapshots

slide-8
SLIDE 8

New Computational Models

Two new models for processing time-evolving graphs

Pause Shift Resume Online Rectification

slide-9
SLIDE 9

Pause-Shift-Resume

Many graph algorithms robust to changes in graph before convergence

E.g. PageRank: pause iterating, update snapshot, continue iterating

slide-10
SLIDE 10

Pause-Shift-Resume

B C A D F E A D D B C D E A A F B C A D F E A D D B C D E A A F

Transition (0.977, 0.968)

(X , Y): X is 10 iteration P ageRank Y is 23 iteration P ageRank After 11 iteration on graph 2, Both converge to 3-digit precision

(0.977, 0.968) (0.571, 0.556) 1.224 0.849 0.502 (2.33, 2.39) 2.07 0.849 0.502 (0.571, 0.556) (0.571, 0.556)

slide-11
SLIDE 11

Online Rectification Model

Many graph algorithms not resilient to changes Need to keep per-vertex state to handle changes Connected components on an evolving graph can be done if each vertex stores its component

slide-12
SLIDE 12

Abstraction

GraphStream[V,E]:

Represents a series of Graph[V,E] snapshots where V = vertices, E = edges

Graph[V,E] @ T = 1 Graph[V,E] @ T = 2 Graph[V,E] @ T = 3 Graph[V,E] @ T = 4

GraphStream[V,E]

slide-13
SLIDE 13

Operations: transform

class GraphStream { def transform(func: Graph => Graph): GraphStream }

func: User provided function to do bulk operations

  • n vertices and edges to create a new graph,

allows aggregations over vertices and edges transform: Applies func over each snapshot Graphs in a GraphStream

slide-14
SLIDE 14

Operations: transform

class GraphStream { def transform(func: Graph => Graph): GraphStream }

T = 1 T = 2 T = 3 T = 4

Original GraphStream Transformed GraphStream func func func func

slide-15
SLIDE 15

Operations: sliding windows

T = 1 T = 2 T = 3 T = 4

Original GraphStream Windowed GraphStream

class GraphStream { def mergeWindows( aggregationFuncs, windowLength, slidingInterval): GraphStream }

aggregationFuncs windowLen slidingInterval

slide-16
SLIDE 16

Differential Computation:

Pause-shift-resume and Online Rectification incorporated into an efficient Pregel-style computation implementation Effectively an extension of the Pregel iterative processing model for time-evolving graphs

slide-17
SLIDE 17

Operations: StreamingBSP

GraphStream

Apply Pregel iterationFunc until next snapshot is available T = 1

class GraphStream { def StreamingBSP(..., iterationFunc, ...): GraphStream }

Combine previous results with new snaphot, continue iterating T = 2 T = 3 Continue until convergence

slide-18
SLIDE 18

PageRank using StreamingBSP

PageRank computation on streaming graphs easily achieved by a simple call

Faster convergence than running PageRank from scratch on every snapshot

slide-19
SLIDE 19

Operations: updateLocalState

class GraphStream { def updateLocalState (stateUpdateFunc, initialState): LocalStateStream } GraphStream

T = 1

initialState

T = 2 T = 3

stateUpdateFunc

Keep updating non-graph "state" as graph evolves

slide-20
SLIDE 20

Implementation

Implemented on Apache Spark platform

  • Spark Streaming: stream processing engine
  • GraphX: graph processing engine

GraphTau implemented by combining Spark Streaming and Graphx

  • Novel optimizations to implement the GraphStream

abstraction

slide-21
SLIDE 21

Other Benefits

Spark Streaming, GraphX built on Spark's RDDs RDDs guarantees fault-tolerance and consistency of datasets In addition, allows mixing data and graph parallel computations in GraphStream

slide-22
SLIDE 22

Preliminary Results

  • Algorithms:

– PageRank – Connected Components

  • Setup: 16 Amazon EC2 instances
  • Datasets:

– Twitter follow graph: 41M vertices, ~1.5B edges – Live LTE network: 2M vertices, variable edges

slide-23
SLIDE 23

Preliminary Results: PageRank

Dataset: Twitter Graph broken in to parts:

  • 1 part = full graph
  • 5 parts = 20% of graph in each part

Comparison:

  • Time to complete PageRank in GraphX on full graph
  • Time to complete streaming PageRank in GraphTau

when the graph is streamed in parts

slide-24
SLIDE 24

Preliminary Results: PageRank

GraphX on whole graph could not converge! GraphTau converged fast when 20% of the graph is streamed at a time Smaller batches lead to faster convergence

slide-25
SLIDE 25

Preliminary Results: Cell IQ

CellIQ (NSDI 2015): Prior work

  • Detection of persistent hotspots using incremental

connected components

  • Built specialized system to do temporal analysis

Re-implemented on general system GraphTau

  • Uses mergeByWindow for sliding window analysis
  • Strawman (baseline) runs non-incremental

connected components on whole window of snapshots

slide-26
SLIDE 26

Preliminary Results: Cell IQ

2 4 6 8 2 4 6 8 10 12

Analysis Time (s) Window Size (m)

Strawman GraphTau CellIQ

GraphTau managed to get performance comparable to specialized system, without domain specific optimizations

slide-27
SLIDE 27

Takeways GraphTau

General purpose processing engine for time-evolving graphs

GraphStream abstraction that provides

Consistent & fault-tolerant snapshot generation Co-ordinate snapshotting and computation Sliding window operations Mix data and graph parallel computations