Big Data on Small Machines Guy Blelloch with: Aapo - - PowerPoint PPT Presentation

big data on small machines
SMART_READER_LITE
LIVE PREVIEW

Big Data on Small Machines Guy Blelloch with: Aapo - - PowerPoint PPT Presentation

Big Data on Small Machines Guy Blelloch with: Aapo Kyrola, Julian Shun 6/6/13 BDA 2013 1 QuesDon There has been a lot of emphasis on


slide-1
SLIDE 1

Big ¡Data ¡on ¡Small ¡Machines ¡

Guy ¡Blelloch ¡ with: ¡Aapo ¡Kyrola, ¡Julian ¡Shun ¡

6/6/13 ¡ BDA ¡2013 ¡ 1 ¡

slide-2
SLIDE 2

QuesDon ¡

  • There ¡has ¡been ¡a ¡lot ¡of ¡emphasis ¡on ¡large ¡clusters, ¡

and ¡tools ¡such ¡as ¡Map ¡Reduce ¡for ¡“big ¡data” ¡

  • But, ¡when ¡might ¡it ¡be ¡be+er ¡to ¡use ¡a ¡smaller ¡

machine ¡such ¡as ¡a ¡laptop, ¡desktop, ¡or ¡rack ¡ mounted ¡mul7-­‑core ¡server? ¡

  • Many ¡potenDal ¡advantages ¡ ¡

– More ¡energy ¡efficient ¡ – More ¡cost ¡effecDve ¡ – Easier ¡to ¡program ¡ – Easier ¡to ¡administer, ¡reliability ¡

6/6/13 ¡ BDA ¡2013 ¡ 2 ¡

slide-3
SLIDE 3

In ¡This ¡Talk ¡

  • 1. Graph ¡analysis ¡using ¡mulD-­‑core ¡servers ¡

(LIGRA, ¡with ¡Julian ¡Shun, ¡PPOPP ¡‘13) ¡

  • 2. Graph ¡analysis ¡using ¡a ¡laptops ¡and ¡disks ¡ ¡

(GraphChi, ¡with ¡Aapo ¡Kyrola, ¡OSDI ¡’12) ¡

  • 3. In ¡memory ¡compression ¡of ¡graphs, ¡and ¡

inverted ¡indices ¡(with ¡Daniel ¡Blandford, ¡ SODA ¡‘04) ¡

6/6/13 ¡ BDA ¡2013 ¡ 3 ¡

slide-4
SLIDE 4

Why ¡use ¡Large ¡Clusters ¡

  • 1. Data ¡does ¡not ¡fit ¡in ¡memory ¡of ¡modest ¡

machines ¡

  • 2. Modest ¡machines ¡are ¡not ¡fast ¡enough ¡to ¡

process ¡the ¡data. ¡

6/6/13 ¡ BDA ¡2013 ¡ 4 ¡

slide-5
SLIDE 5

BIG ¡Data ¡

Sloan ¡Sky ¡Survey: ¡7 ¡x ¡1013 ¡bytes/year ¡now ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡7 ¡x ¡1015 ¡bytes/year ¡in ¡2016 ¡ Large ¡Hadron ¡Collider: ¡ ¡ ¡ ¡ ¡ ¡150 ¡million ¡sensors ¡x ¡40 ¡million ¡samples/sec ¡ ¡ ¡ ¡ ¡ ¡= ¡6 ¡x ¡1016 ¡samples/year ¡ Wallmart ¡Database: ¡2.5*1015 ¡bytes ¡(predicted) ¡ ¡ ¡ ¡ ¡ ¡10 ¡Billion ¡TransacDons/year ¡ YouTube ¡: ¡1.2 ¡x ¡10^8 ¡videos ¡x ¡2 ¡x ¡107 ¡mbytes/video ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡= ¡3 ¡x ¡1015 ¡bytes ¡ Genome: ¡4 ¡x ¡109 ¡bp/human ¡x ¡4 ¡x ¡109 ¡humans ¡= ¡1019 ¡bytes ¡

6/6/13 ¡ BDA ¡2013 ¡ 5 ¡

But ¡most ¡analysis ¡does ¡not ¡have ¡to ¡look ¡at ¡all ¡ ¡ the ¡data ¡

slide-6
SLIDE 6

Large ¡Data ¡(Graphs) ¡

  • Web ¡graph ¡(centered ¡around ¡Wikipedia) ¡

6/6/13 ¡ BDA ¡2013 ¡ 6 ¡

slide-7
SLIDE 7

Large ¡Data ¡(Graphs) ¡

Edges ¡ Uncompressed ¡ Compressed ¡ Publicly ¡Available ¡ 6 ¡Billion ¡ 60 ¡GB ¡ 6 ¡GB ¡ Twiger ¡ 25 ¡Billion ¡ 250 ¡GB ¡ 25 ¡GB ¡ Facebook ¡ 140 ¡Billion ¡ 1.4 ¡TB ¡ 140 ¡GB ¡ Web ¡Graph ¡(usefull) ¡ 200 ¡Billion? ¡ ¡2 ¡TB ¡ 200 ¡Gbytes ¡

6/6/13 ¡ BDA ¡2013 ¡ 7 ¡

slide-8
SLIDE 8

Large ¡Text ¡

  • Jstor ¡: ¡2 ¡Million ¡Docs ¡– ¡100Gbytes ¡
  • PubMed ¡20 ¡Million ¡Docs ¡– ¡100Gbytes ¡
  • Library ¡of ¡congress: ¡3 ¡x ¡107 ¡volumes ¡x ¡ ¡105/vol ¡

¡ ¡ ¡ ¡ ¡ ¡ ¡3 ¡TB ¡(compressed) ¡ * ¡All ¡numbers ¡esDmated ¡

6/6/13 ¡ BDA ¡2013 ¡ 8 ¡

slide-9
SLIDE 9

Machines ¡

Cost ¡ Main ¡ ¡ Memory ¡ Secondary ¡ ¡ Memory ¡ Laptop ¡ $1K ¡ 10 ¡GB ¡ ¡1 ¡TB ¡ Desktop ¡ $4K ¡ 100 ¡GB ¡ 10 ¡TB ¡ Server ¡ $20K ¡ 1 ¡TB ¡ 100 ¡TB ¡ 100 ¡node ¡ Cluster ¡ $200K ¡ 10 ¡TB ¡ 1000 ¡TB ¡

6/6/13 ¡ BDA ¡2013 ¡ 9 ¡

Twiger ¡Graph ¡: ¡250 ¡Gbytes ¡ Compressed ¡Twiger ¡Graph: ¡25 ¡Gbytes ¡

slide-10
SLIDE 10

Machines ¡

Cost ¡ Main ¡ ¡ Memory ¡ Secondary ¡ ¡ Memory ¡ Laptop ¡ $1K ¡ 10 ¡GB ¡ ¡1 ¡TB ¡ Desktop ¡ $4K ¡ 100 ¡GB ¡ 10 ¡TB ¡ Server ¡ $20K ¡ 1 ¡TB ¡ 100 ¡TB ¡ 100 ¡node ¡ Cluster ¡ $200K ¡ 10 ¡TB ¡ 1000 ¡TB ¡

6/6/13 ¡ BDA ¡2013 ¡ 10 ¡

Twiger ¡Graph ¡: ¡250 ¡Gbytes ¡ Compressed ¡Twiger ¡Graph: ¡25 ¡Gbytes ¡

slide-11
SLIDE 11

Machines ¡

Cost ¡ Main ¡ ¡ Memory ¡ Secondary ¡ ¡ Memory ¡ Cores ¡ Laptop ¡ $1K ¡ 10 ¡GB ¡ ¡1 ¡TB ¡ 4 ¡ Desktop ¡ $4K ¡ 100 ¡GB ¡ 10 ¡TB ¡ 16 ¡ Server ¡ $20K ¡ 1 ¡TB ¡ 100 ¡TB ¡ 64 ¡ 100 ¡node ¡ Cluster ¡ $200K ¡ 10 ¡TB ¡ 1000 ¡TB ¡ 800 ¡

6/6/13 ¡ BDA ¡2013 ¡ 11 ¡

Twiger ¡Graph ¡: ¡250 ¡Gbytes ¡ Compressed ¡Twiger ¡Graph: ¡25 ¡Gbytes ¡

slide-12
SLIDE 12

In ¡This ¡Talk ¡

  • 1. Graph ¡and ¡Text ¡analysis ¡using ¡mulD-­‑core ¡

servers ¡(LIGRA, ¡with ¡Julian ¡Shun, ¡PPOPP ¡‘13) ¡

  • 2. Graph ¡analysis ¡using ¡a ¡laptops ¡and ¡disks ¡ ¡

(GraphChi, ¡with ¡Aapo ¡Kyrola, ¡OSDI ¡’12) ¡

  • 3. In ¡memory ¡compression ¡of ¡graphs, ¡and ¡

inverted ¡indices ¡(with ¡Daniel ¡Blandford, ¡ SODA ¡‘04) ¡

6/6/13 ¡ BDA ¡2013 ¡ 12 ¡

slide-13
SLIDE 13

Ligra ¡

  • ¡Lightweight ¡graph ¡processing ¡system ¡for ¡shared ¡

memory ¡mulDcore ¡machines ¡

– Lightweight: ¡modest ¡amount ¡of ¡code ¡(about ¡1500 ¡ lines ¡including ¡comments) ¡ – Simple: ¡framework ¡only ¡has ¡2 ¡rouDnes ¡and ¡one ¡data ¡ structure ¡

  • This ¡is ¡enough ¡for ¡a ¡wide ¡class ¡of ¡graph ¡traversal ¡algorithms! ¡

– Parallel: ¡designed ¡for ¡shared ¡memory ¡systems ¡ – Efficient: ¡outperform ¡other ¡graph ¡systems ¡by ¡orders ¡

  • f ¡magnitude, ¡up ¡to ¡39x ¡speedup ¡on ¡40 ¡cores ¡

– Designed ¡for ¡synchronous ¡computaDons ¡

6/6/13 ¡ BDA ¡2013 ¡ 13 ¡

slide-14
SLIDE 14

Ligra ¡Interface ¡

  • Vertex ¡subset: ¡represents ¡a ¡subset ¡of ¡verDces ¡

– Important ¡for ¡algorithms ¡that ¡process ¡only ¡a ¡subset ¡of ¡ verDces ¡each ¡iteraDon ¡ – Can ¡keep ¡around ¡mulDple ¡subsets ¡for ¡same ¡graph ¡ – Can ¡use ¡one ¡subset ¡for ¡mulDple ¡graphs ¡

  • Vertex ¡map: ¡maps ¡user ¡boolean ¡funcDon ¡over ¡

vertex ¡subset ¡

  • Edge ¡map: ¡maps ¡user ¡boolean ¡funcDon ¡over ¡out-­‑

edges ¡of ¡vertex ¡subset ¡

  • Note: ¡system ¡does ¡not ¡store ¡vertex/edge ¡data. ¡

User-­‑defined ¡vertex/edge ¡data ¡can ¡be ¡modified ¡ by ¡the ¡funcDon ¡passed ¡to ¡map ¡

6/6/13 ¡ BDA ¡2013 ¡ 14 ¡

slide-15
SLIDE 15

Parallel ¡Breadth ¡First ¡Search ¡(BFS) ¡

r ¡ 1 ¡ 4 ¡ 3 ¡ 2 ¡ 5 ¡ 8 ¡ 7 ¡ 6 ¡ 9 ¡

12 ¡ 11 ¡ 10 ¡ 15 ¡ 14 ¡ 13 ¡ 16 ¡ 17 ¡ 19 ¡ 18 ¡

r ¡ 1 ¡ 4 ¡ 3 ¡ 2 ¡ 5 ¡ 8 ¡ 7 ¡ 6 ¡ 9 ¡

12 ¡ 11 ¡ 10 ¡ 15 ¡ 14 ¡ 13 ¡ 16 ¡ 17 ¡ 19 ¡ 18 ¡

6/6/13 ¡ BDA ¡2013 ¡ 15 ¡

Vsubset ¡

slide-16
SLIDE 16

Breadth-­‑first ¡search ¡in ¡Ligra ¡

16 ¡

  • compare-­‑and-­‑swap ¡= ¡CAS; ¡takes ¡three ¡arguments ¡(addr, ¡oldval, ¡newval) ¡

and ¡atomically ¡updates ¡value ¡at ¡addr ¡to ¡newval ¡if ¡its ¡value ¡was ¡oldval. ¡ Returns ¡true ¡if ¡updated, ¡false ¡otherwise. ¡

  • Line ¡4 ¡agempts ¡to ¡sets ¡vertex ¡s ¡to ¡be ¡vertex ¡d’’s ¡parent ¡if ¡unvisited ¡
  • Cond ¡is ¡used ¡to ¡check ¡if ¡unvisited ¡(-­‑1 ¡means ¡unvisited) ¡
  • EdgeMap ¡takes ¡fronDer, ¡outputs ¡next ¡fronDer ¡

¡

6/6/13 ¡ BDA ¡2013 ¡

slide-17
SLIDE 17

Two ¡methods ¡for ¡BFS ¡

11 ¡ 10 ¡

9 ¡

12 ¡ 13 ¡ 15 ¡ 14 ¡

1 ¡ 4 ¡ 3 ¡ 2 ¡ 5 ¡ 8 ¡ 7 ¡ 6 ¡ FronDer ¡

6/6/13 ¡ BDA ¡2013 ¡ 17 ¡

Idea ¡due ¡to ¡Beamer, ¡Asanovic ¡ and ¡Pagerson ¡(2012): ¡

  • 1st ¡(Sparse) ¡method ¡beger ¡for ¡

small ¡fronDers ¡

  • 2nd ¡(Dense) ¡method ¡beger ¡when ¡

fronDer ¡is ¡large ¡and ¡many ¡verDces ¡ have ¡been ¡visited ¡

  • Switch ¡between ¡the ¡two ¡

approaches ¡based ¡on ¡fronDer ¡size ¡

slide-18
SLIDE 18

Experiments ¡

  • Used ¡a ¡variety ¡of ¡arDficial ¡and ¡real-­‑world ¡graphs ¡
  • Largest ¡is ¡Yahoo ¡web ¡graph ¡with ¡1.4 ¡billion ¡verDces ¡

and ¡6.6 ¡billion ¡edges ¡

  • ImplementaDons ¡in ¡Cilk ¡Plus ¡(extension ¡to ¡C++), ¡

1500 ¡lines ¡of ¡code ¡for ¡the ¡system ¡

  • Using ¡40-­‑core ¡Intel ¡Nehalem ¡based ¡machine ¡
  • Good ¡speedup, ¡up ¡to ¡39x ¡(PageRank) ¡

6/6/13 ¡ BDA ¡2013 ¡ 18 ¡

slide-19
SLIDE 19

Comparison ¡to ¡other ¡ ¡ graph ¡processing ¡systems ¡

6/6/13 ¡ BDA ¡2013 ¡ 19 ¡

Ligra: ¡40 ¡core ¡ Performance ¡

  • vs. ¡

Machines ¡ Performance ¡ Breadth ¡first ¡ search ¡ 2.5B ¡edges/sec ¡ KDT ¡ 64 ¡x ¡4 ¡core ¡Intel ¡ Nehalem ¡ 473M ¡edges/sec ¡ Approximate ¡ betweenness ¡ centrality ¡ 526M ¡edges/sec ¡ KDT ¡ 24 ¡x ¡12 ¡core ¡AMD ¡ Opteron ¡ processors ¡ 125M ¡edges/sec ¡ Page ¡Rank ¡ (15 ¡lines ¡of ¡code) ¡ 2.91 ¡sec/iteraDon ¡ for ¡1.5B ¡edge ¡ Twiger ¡graph ¡ Powergraph ¡ 8 ¡x ¡64-­‑core ¡ machines ¡ 3.6 ¡sec/iteraDon ¡ for ¡1.5B ¡edge ¡ Twiger ¡graph ¡ Shortest ¡Paths ¡ 1.68B ¡edges ¡in ¡ under ¡2 ¡seconds ¡ Pregel ¡ 300 ¡mulDcore ¡ commodity ¡PCs ¡ 1B ¡edges ¡in ¡20 ¡ seconds ¡

Hadoop: ¡198sec, ¡Sparc: ¡97.4sec, ¡Twister ¡36sec ¡ ¡ ¡ ¡

slide-20
SLIDE 20

Ligra ¡-­‑ ¡Conclusions ¡

  • Lightweight: ¡framework ¡is ¡only ¡about ¡1500 ¡

lines ¡of ¡code ¡including ¡comments ¡

  • Simple: ¡Leads ¡to ¡simple ¡implementaDons ¡of ¡

graph ¡traversal ¡algorithms ¡

– Abstract ¡main ¡components ¡of ¡graph ¡traversal ¡ algorithms ¡into ¡two ¡funcDons ¡

  • Efficient: ¡Up ¡to ¡orders ¡of ¡magnitude ¡faster ¡

than ¡those ¡of ¡other ¡graph ¡processing ¡systems ¡

– Not ¡much ¡slower ¡than ¡highly-­‑opDmized ¡ applicaDon-­‑specific ¡code ¡

6/6/13 ¡ BDA ¡2013 ¡ 20 ¡

slide-21
SLIDE 21

Ligra ¡-­‑ ¡Conclusions ¡

  • LimitaDons: ¡ ¡

– Does ¡not ¡work ¡well ¡with ¡dynamic ¡graphs ¡ – Not ¡for ¡asynchronous ¡computaDons ¡

  • Future ¡work: ¡

– Address ¡limitaDons ¡ – Extending ¡to ¡GPUs ¡ ¡

6/6/13 ¡ BDA ¡2013 ¡ 21 ¡

slide-22
SLIDE 22

In ¡This ¡Talk ¡

  • 1. Graph ¡and ¡Text ¡analysis ¡using ¡mulD-­‑core ¡

servers ¡(LIGRA, ¡with ¡Julian ¡Shun, ¡PPOPP ¡‘13) ¡

  • 2. Graph ¡analysis ¡using ¡a ¡laptops ¡and ¡disks ¡ ¡

(GraphChi, ¡with ¡Aapo ¡Kyrola, ¡OSDI ¡’12) ¡

  • 3. In ¡memory ¡compression ¡of ¡graphs, ¡and ¡

inverted ¡indices ¡(with ¡Daniel ¡Blandford, ¡ SODA ¡‘04) ¡

6/6/13 ¡ BDA ¡2013 ¡ 22 ¡

slide-23
SLIDE 23

Data ¡ Data ¡ Data ¡ Data ¡ Data ¡ Data ¡ Data ¡ Data ¡ Data ¡ Data ¡

Vertex-­‑centric ¡Programming ¡

  • “Think ¡like ¡a ¡vertex” ¡
  • Popularized ¡by ¡the ¡Pregel ¡and ¡GraphLab ¡projects ¡

– Historically, ¡systolic ¡computaDon ¡and ¡the ¡ConnecDon ¡Machine ¡

MyFunc(vertex) ¡ ¡

{ ¡// ¡modify ¡neighborhood ¡} ¡

Data ¡ Data ¡ Data ¡ Data ¡ Data ¡

6/6/13 ¡ BDA ¡2013 ¡ 23 ¡

slide-24
SLIDE 24

Disk-­‑Based ¡Graph ¡Algorithms ¡

Main ¡Challenge: ¡Random ¡Access ¡ ¡ ¡ ¡ ¡5ms ¡Disk, ¡.05ms ¡SSD, ¡.0001ms ¡memory ¡ GraphChi ¡Solu7on: ¡Parallel ¡Sliding ¡Windows ¡

6/6/13 ¡ BDA ¡2013 ¡ 24 ¡

slide-25
SLIDE 25
  • VerDces ¡are ¡numbered ¡from ¡1 ¡to ¡n ¡

– P ¡intervals, ¡each ¡associated ¡with ¡a ¡shard ¡on ¡disk. ¡ – sub-­‑graph ¡= ¡interval ¡of ¡verDces ¡

PSW: ¡ ¡Shards ¡and ¡Intervals ¡

shard(1) ¡ interval(1) ¡ interval(2) ¡ interval(P) ¡ shard(2) ¡ shard(P) ¡ 1 ¡ n ¡ v1 ¡ v2 ¡

25 ¡ BDA ¡2013 ¡ 6/6/13 ¡

slide-26
SLIDE 26

6/6/13 ¡ BDA ¡2013 ¡ 26 ¡

slide-27
SLIDE 27

PSW: ¡Layout ¡

Shard ¡1 ¡

Shards ¡small ¡enough ¡to ¡fit ¡in ¡memory; ¡balance ¡size ¡of ¡shards ¡

Shard: ¡in-­‑edges ¡for ¡interval ¡of ¡verDces; ¡sorted ¡by ¡source-­‑id ¡

in-­‑edges ¡for ¡verDces ¡1..100 ¡ sorted ¡by ¡source_id ¡

VerDces ¡ 1..100 ¡ VerDces ¡ 101..700 ¡ VerDces ¡ 701..1000 ¡ VerDces ¡ 1001..10000 ¡ Shard ¡2 ¡ Shard ¡3 ¡ Shard ¡4 ¡ Shard ¡1 ¡

6/6/13 ¡ BDA ¡2013 ¡ 27 ¡

slide-28
SLIDE 28

VerDces ¡ 1..100 ¡ VerDces ¡ 101..700 ¡ VerDces ¡ 701..1000 ¡ VerDces ¡ 1001..10000 ¡

Load ¡all ¡in-­‑edges ¡ in ¡memory ¡ ¡ Load ¡subgraph ¡for ¡ver7ces ¡1..100 ¡

What ¡about ¡out-­‑edges? ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Arranged ¡in ¡sequence ¡in ¡other ¡shards ¡

Shard ¡2 ¡ Shard ¡3 ¡ Shard ¡4 ¡

PSW: ¡Loading ¡Sub-­‑graph ¡

Shard ¡1 ¡

in-­‑edges ¡for ¡verDces ¡1..100 ¡ sorted ¡by ¡source_id ¡

6/6/13 ¡ BDA ¡2013 ¡ 28 ¡

slide-29
SLIDE 29

Shard ¡1 ¡

Load all in-edges in memory Load ¡subgraph ¡for ¡ver7ces ¡101..700 ¡

Shard ¡2 ¡ Shard ¡3 ¡ Shard ¡4 ¡

PSW: ¡Loading ¡Sub-­‑graph ¡

VerDces ¡ 1..100 ¡ VerDces ¡ 101..700 ¡ VerDces ¡ 701..1000 ¡ VerDces ¡ 1001..10000 ¡

Out-edge blocks in memory

in-­‑edges ¡for ¡verDces ¡1..100 ¡ sorted ¡by ¡source_id ¡

6/6/13 ¡ BDA ¡2013 ¡ 29 ¡

slide-30
SLIDE 30

GraphChi ¡

  • C++ ¡implementaDon: ¡8,000 ¡lines ¡of ¡code ¡

– Java-­‑implementaDon ¡also ¡available ¡(~ ¡2-­‑3x ¡ slower), ¡with ¡a ¡Scala ¡API. ¡

  • Several ¡opDmizaDons ¡to ¡PSW ¡(see ¡paper). ¡

Source ¡code ¡and ¡ examples: ¡ hgp://graphchi.org ¡

6/6/13 ¡ BDA ¡2013 ¡ 30 ¡

slide-31
SLIDE 31

EvaluaDon: ¡Is ¡PSW ¡expressive ¡enough? ¡

Graph ¡Mining ¡

– Connected ¡components ¡ – Approx. ¡shortest ¡paths ¡ – Triangle ¡counDng ¡ – Community ¡DetecDon ¡

SpMV ¡

– PageRank ¡ – Generic ¡

Recommenda7ons ¡

– Random ¡walks ¡

Collabora7ve ¡Filtering ¡(by ¡

Danny ¡Bickson) ¡

– ALS ¡ – SGD ¡ – Sparse-­‑ALS ¡ – SVD, ¡SVD++ ¡ – Item-­‑CF ¡ + ¡many ¡more ¡

Probabilis7c ¡Graphical ¡ Models ¡

– Belief ¡PropagaDon ¡

Algorithms ¡implemented ¡for ¡GraphChi ¡(Oct ¡2012) ¡

6/6/13 ¡ BDA ¡2013 ¡ 31 ¡

slide-32
SLIDE 32

Experiment ¡Se{ng ¡

  • Mac ¡Mini ¡(Apple ¡Inc.) ¡

– 8 ¡GB ¡RAM ¡ – 256 ¡GB ¡SSD, ¡1TB ¡hard ¡drive ¡ – Intel ¡Core ¡i5, ¡2.5 ¡GHz ¡

  • Experiment ¡graphs: ¡

Graph ¡ Ver7ces ¡ Edges ¡ P ¡(shards) ¡ Preprocessing ¡ live-­‑journal ¡ 4.8M ¡ 69M ¡ 3 ¡ 0.5 ¡min ¡ ne|lix ¡ 0.5M ¡ 99M ¡ 20 ¡ 1 ¡min ¡ twiger-­‑2010 ¡ 42M ¡ 1.5B ¡ 20 ¡ 2 ¡min ¡ uk-­‑2007-­‑05 ¡ 106M ¡ 3.7B ¡ 40 ¡ 31 ¡min ¡ uk-­‑union ¡ 133M ¡ 5.4B ¡ 50 ¡ 33 ¡min ¡

yahoo-­‑web ¡ 1.4B ¡ 6.6B ¡ 50 ¡ 37 ¡min ¡

6/6/13 ¡ BDA ¡2013 ¡ 32 ¡

slide-33
SLIDE 33

PowerGraph ¡Comparison ¡

  • PowerGraph ¡/ ¡GraphLab ¡2 ¡
  • utperforms ¡previous ¡systems ¡

by ¡a ¡wide ¡margin ¡on ¡natural ¡

  • graphs. ¡
  • With ¡64 ¡more ¡machines, ¡512 ¡

more ¡CPUs: ¡

– Pagerank: ¡40x ¡faster ¡than ¡ GraphChi ¡ – Triangle ¡coun7ng: ¡30x ¡faster ¡ than ¡GraphChi. ¡

OSDI’12 ¡

GraphChi ¡has ¡state-­‑of-­‑the-­‑ art ¡performance ¡/ ¡CPU. ¡

  • vs. ¡

GraphChi ¡

6/6/13 ¡ BDA ¡2013 ¡ 33 ¡

slide-34
SLIDE 34

Hybrid ¡Approach ¡

Possible ¡approach ¡for ¡graphs ¡with ¡metadata: ¡ ¡

– Use ¡a ¡server ¡with ¡e.g. ¡1 ¡TB ¡mem, ¡100TB ¡Disk ¡ – In ¡memory ¡for ¡main ¡graph ¡ – Disk ¡for ¡meta ¡data ¡

6/6/13 ¡ BDA ¡2013 ¡ 34 ¡

slide-35
SLIDE 35

In ¡This ¡Talk ¡

  • 1. Graph ¡and ¡Text ¡analysis ¡using ¡mulD-­‑core ¡

servers ¡(LIGRA, ¡with ¡Julian ¡Shun, ¡PPOPP ¡‘13) ¡

  • 2. Graph ¡analysis ¡using ¡a ¡laptops ¡and ¡disks ¡ ¡

(GraphChi, ¡with ¡Aapo ¡Kyrola, ¡OSDI ¡’12) ¡

  • 3. In ¡memory ¡compression ¡of ¡graphs, ¡and ¡

inverted ¡indices ¡(with ¡Daniel ¡Blandford, ¡ SODA ¡‘04) ¡

6/6/13 ¡ BDA ¡2013 ¡ 35 ¡

slide-36
SLIDE 36

BDA 2013 Page 36

Compressing Graphs

  • Goal: To represent large graphs compactly

while supporting queries efficiently

– e.g., adjacency and neighbor queries – want to do significantly better than adjacency lists (e.g. a factor of 10 less space, about the same time)

  • Applications:

– Large web graphs – Large meshes – Phone call graphs

6/6/13 ¡

slide-37
SLIDE 37

BDA 2013 Page 37

Main Ideas

– Number vertices so adjacent vertices have similar numbers

  • Use separators to do this

– Use difference coding on adjacency lists – Use efficient data structure for indexing

6/6/13 ¡

slide-38
SLIDE 38

BDA 2013 Page 38

Renumbering with Edge Separators

6/6/13 ¡

slide-39
SLIDE 39

BDA 2013 Page 39

Renumbering with Edge Separators

6/6/13 ¡

slide-40
SLIDE 40

BDA 2013 Page 40

Renumbering with Edge Separators

6/6/13 ¡

slide-41
SLIDE 41

BDA 2013 Page 41

Renumbering with Edge Separators

6/6/13 ¡

slide-42
SLIDE 42

BDA 2013 Page 42

Compressed Adjacency Tables

6/6/13 ¡

slide-43
SLIDE 43

BDA 2013 Page 43

Log-sized Codes

  • Log-sized code: Any prefix code that takes

O(log(d)) bits to represent an integer d.

  • Gamma code, delta code, skewed Bernoulli code

Example: Gamma code Prefix: unary code for ⎣log d⎦ Suffix: binary code for d-2⎣log d⎦ (binary code for d, except leading 1 is implied)

6/6/13 ¡

slide-44
SLIDE 44

BDA 2013 Page 44

Theorem (edge separators)

  • Any class of graphs that allows O(nc)

edge separators can be compressed to O(n) bits with O(1) access time using:

– Difference coded adjacency lists – O(n)-bit indexing structure

6/6/13 ¡

slide-45
SLIDE 45

BDA 2013 Page 45

Performance: Adjacency Table

Time is to create the structure, normalized to time for DFS

6/6/13 ¡

slide-46
SLIDE 46

BDA 2013 Page 46

Performance: Overall

6/6/13 ¡

slide-47
SLIDE 47

Conclusions ¡

  • For ¡many ¡applicaDons ¡of ¡“large ¡data”, ¡data ¡can ¡fit ¡

in ¡the ¡memory ¡of ¡a ¡server ¡or ¡disk ¡of ¡a ¡laptop. ¡

  • Speed ¡can ¡be ¡improved ¡on ¡a ¡single ¡mulDcore ¡

server ¡over ¡a ¡distributed ¡system, ¡and ¡significantly ¡ more ¡energy ¡efficient. ¡

  • Code ¡can ¡be ¡simpler ¡and ¡more ¡general ¡
  • Disk ¡algorithms ¡are ¡likely ¡the ¡most ¡energy ¡

efficient, ¡so ¡good ¡for ¡high ¡bandwidth ¡ embarassigly ¡parallel ¡applicaDons ¡

6/6/13 ¡ BDA ¡2013 ¡ 47 ¡

slide-48
SLIDE 48

Thank ¡you! ¡

6/6/13 ¡ BDA ¡2013 ¡ 48 ¡