VENUS VertexCentric Streamlined Graph Computation on a Single


![Mining from Big Graphs: two feasible ways Ø Distributed systems • Pregel[SIGMOD’ 10], Graph. Mining from Big Graphs: two feasible ways Ø Distributed systems • Pregel[SIGMOD’ 10], Graph.](https://slidetodoc.com/presentation_image_h/3442f4821a41a321fa8847019c9998a0/image-3.jpg)







![Interval G-shard V-shard I 1=[1, 4] 7, 9, 10 6, 10 1, 2, 6, Interval G-shard V-shard I 1=[1, 4] 7, 9, 10 6, 10 1, 2, 6,](https://slidetodoc.com/presentation_image_h/3442f4821a41a321fa8847019c9998a0/image-11.jpg)










- Slides: 21
VENUS: Vertex-Centric Streamlined Graph Computation on a Single PC Jiefeng Cheng 1, Qin Liu 2, Zhenguo Li 1, Wei Fan 1, John C. S. Lui 2, Cheng He 1 1 Huawei 2 The Noah’s Ark Lab Chinese University of Hong Kong ICDE’ 15
Graph is everywhere Ø We have large graphs • • Web graph Social graph User-movie ratings graph … Ø Graph Computation • • Page. Rank Community detection ALS for collaborative filtering …
Mining from Big Graphs: two feasible ways Ø Distributed systems • Pregel[SIGMOD’ 10], Graph. Lab[OSDI’ 12], Graph. X[OSDI’ 14], Giraph, . . . • Expensive cluster, complex setup, writing distributed programs Ø Single-machine system • Disk: Graph. Chi[OSDI’ 12], X-Stream[SOSP’ 13] • SSD: Turbo. Graph[KDD’ 13], Flash. Graph[FAST’ 15] • Computation time close to distributed systems • Page. Rank on Twitter graph (41 M nodes, 1. 4 B edges) • Spark: 8. 1 min with 50 machines (each with 2 CPUs, 7. 5 G RAM)[Stanton KDD’ 12] • VENUS: 8 min on a single machine with quad-core CPU, 16 G RAM • Affordable, easy to program/debug
Existing Systems Ø Vertex-centric programming model: popularized by Pregel / Graph. Lab / Graph. Chi • Each vertex updates itself based on its neighborhood Ø Graph. Chi • Updated data on each vertex must be propagated to its neighbors through disk • Extensive disk I/O Ø X-Stream • Different API: edge-centric programming • Less expressive, re-implement common algorithms • Also use disk to propagate updates
Our Contributions Ø Design and implement a disk-based system, VENUS • A new vertex-centric streamlined processing model • Separate mutable vertex data and immutable edge data • Read/Write less data compared to other systems Ø Evaluation on large graphs • Outperform Graph. Chi and X-Stream • Verify that our design reduce data access
Vertex-Centric Programming Ø Consider Graph. Chi for each iteration for each vertex v update(v) v void update(v) fetch data from each in-edge update data on v spread data to each out-edge Duplicated data
Vertex-Centric Programming Ø VENUS: • Only store mutable values on vertices void update(v) in-neighbor fetch data from each in-edge update data on v spread data to each out-edge Ø Pros • Less data access • Enable ``streamlined’’ processing Ø Cons • Limited expressiveness v
VENUS Architecture
VENUS Architecture Ø Disk storage (offline) • Sharding • Separation of edge data and vertex data Ø Computing model (online) • Load edge data sequentially • Execute the update function on each vertex • How to load vertex data and propagate updates
Sharding Ø Graph cannot fit in RAM? • Split the graph into shards Ø Each shard corresponds to an interval of vertices: • G-shard: immutable structure of graph • In-edges of nodes in the interval • V-shard: mutable vertex values • Vertex values of all vertices in the shard Ø Structure table: all g-shards Ø Value table: all vertex data Vertex ID 1 2 3 4 5 6 7 8 9 10 11 12 Data
Interval G-shard V-shard I 1=[1, 4] 7, 9, 10 6, 10 1, 2, 6, 7, 10 → → 1 2 3 4 I 1∪{6, 7, 9, 10} I 2=[5, 8] 6, 7, 8, 11 1, 10 3, 10, 11 3, 6, 11 → → 5 6 7 8 I 2∪{1, 3, 10, 11} I 3=[9, 12] 2, 3, 4, 10, 11 11 4, 6 2, 3, 9, 10, 11 → 9 → 10 → 11 → 12 I 3∪{2, 3, 4, 6}
Vertex-Centric Streamlined Processing Ø V-shards are much smaller than g-shards • Load each v-shard entirely into memory Ø Scan each g-shard sequentially • Execute the update function in parallel
Execution Loading Load v-shard 1 Parallelize execution and loading 7, 9, 10 → 1 6, 10 → 2 1, 2, 6 → 3 1, 2, 6, 7, 10 → 4 Update v-shard 1 Load v-shard 2 6, 7, 8, 11 → 5 1, 10 → 6 3, 10, 11 → 7 3, 6, 11 → 8 Update v-shard 2 Load v-shard 3 2, 3, 4, 10, 11 → 9 11 → 10 4, 6 → 11 2, 3, 9, 10, 11 → 12 Update v-shard 3
Load and Update v-shards Ø Two I/O efficient algorithms • Algorithm 1: Extension of PSW in Graph. Chi (skip) • Algorithm 2: Merge-Join • Load: merge-join between value table and v-shard ID 1 2 3 4 5 6 7 8 9 10 11 12 Data ID 1 2 3 4 6 7 9 10 Data Value table on disk Vertices in v-shard 1 on disk Loaded v-shard 1 • Update: write values of [1, 4] back to vertex table Ø Use value buffer to cache value table
Evaluation of VENUS Ø Setup: a commodity PC • quad-core 3. 4 GHz CPU • 16 GB RAM and 4 TB hard disk Ø Main competitors: • Graph. Chi and X-Stream Ø Applications: • • • Page. Rank WCC: weakly connected components CD: community detection ALS: alternating least square for collaborative filtering Shortest path, label propagations, etc.
Page. Rank on Twitter Ø Twitter follow-graph: 41 M nodes, 1. 4 B edges
Cost of Updates Propagation: Data Write and Read
Applications: WCC, CD, ALS Failed to implement CD on X-Stream, due to its edge-centric programming model
Web-Scale Graph Ø Clueweb 12: web scale graph • 978 million nodes, 42. 5 billion edges • 402 GB on disk • 2 iterations of Page. Rank Ø Computation time • • Graph. Chi: 4. 3 hours X-Stream: 7. 4 hours VENUS-I: 2 hours VENUS-II: 1. 8 hours
Conclusion Ø Present a disk-based graph computation system, VENUS Ø Our design of graph storage and execution can reduce data access and I/O Ø Evaluations show it outperforms Graph. Chi and X -Stream Ø Also VENUS can handle billion-scale problems
Thank you! Q&A