Presentation is loading. Please wait.

Presentation is loading. Please wait.

Distributed Data-Parallel Programming using Dryad Andrew Birrell, Mihai Budiu, Dennis Fetterly, Michael Isard, Yuan Yu Microsoft Research Silicon Valley.

Similar presentations


Presentation on theme: "Distributed Data-Parallel Programming using Dryad Andrew Birrell, Mihai Budiu, Dennis Fetterly, Michael Isard, Yuan Yu Microsoft Research Silicon Valley."— Presentation transcript:

1 Distributed Data-Parallel Programming using Dryad Andrew Birrell, Mihai Budiu, Dennis Fetterly, Michael Isard, Yuan Yu Microsoft Research Silicon Valley UC Santa Cruz, 4th February 2008

2 Dryad goals General-purpose execution environment for distributed, data-parallel applications –Concentrates on throughput not latency –Assumes private data center Automatic management of scheduling, distribution, fault tolerance, etc.

3 Talk outline Computational model Dryad architecture Some case studies DryadLINQ overview Summary

4 A typical data-intensive query var logentries = from line in logs where !line.StartsWith("#") select new LogEntry(line); var user = from access in logentries where select access; var accesses = from access in user group access by access.page into pages select new UserPageCount("ulfar", pages.Key, pages.Count()); var htmAccesses = from access in accesses where access.page.EndsWith(".htm") orderby access.count descending select access; Ulfars most frequently visited web pages

5 Steps in the query var logentries = from line in logs where !line.StartsWith("#") select new LogEntry(line); var user = from access in logentries where select access; var accesses = from access in user group access by access.page into pages select new UserPageCount("ulfar", pages.Key, pages.Count()); var htmAccesses = from access in accesses where access.page.EndsWith(".htm") orderby access.count descending select access; Go through logs and keep only lines that are not comments. Parse each line into a LogEntry object. Go through logentries and keep only entries that are accesses by ulfar. Group ulfar s accesses according to what page they correspond to. For each page, count the occurrences. Sort the pages ulfar has accessed according to access frequency.

6 Serial execution var logentries = from line in logs where !line.StartsWith("#") select new LogEntry(line); var user = from access in logentries where select access; var accesses = from access in user group access by access.page into pages select new UserPageCount("ulfar", pages.Key, pages.Count()); var htmAccesses = from access in accesses where access.page.EndsWith(".htm") orderby access.count descending select access; For each line in logs, do… For each entry in logentries, do.. Sort entries in user by page. Then iterate over sorted list, counting the occurrences of each page as you go. Re-sort entries in access by page frequency.

7 Parallel execution var logentries = from line in logs where !line.StartsWith("#") select new LogEntry(line); var user = from access in logentries where select access; var accesses = from access in user group access by access.page into pages select new UserPageCount("ulfar", pages.Key, pages.Count()); var htmAccesses = from access in accesses where access.page.EndsWith(".htm") orderby access.count descending select access;

8 How does Dryad fit in? Many programs can be represented as a distributed execution graph –The programmer may not have to know this SQL-like queries: LINQ Dryad will run them for you

9 Who is the target developer? Raw Dryad middleware –Experienced C++ developer –Can write good single-threaded code –Wants generality, can tune performance Higher-level front ends for broader audience

10 Talk outline Computational model Dryad architecture Some case studies DryadLINQ overview Summary

11 Runtime Services –Name server –Daemon Job Manager –Centralized coordinating process –User application to construct graph –Linked with Dryad libraries for scheduling vertices Vertex executable –Dryad libraries to communicate with JM –User application sees channels in/out –Arbitrary application code, can use local FS

12 Job = Directed Acyclic Graph Processing vertices Channels (file, pipe, shared memory) Inputs Outputs

13 Whats wrong with MapReduce? Literally Map then Reduce and thats it… –Reducers write to replicated storage Complex jobs pipeline multiple stages –No fault tolerance between stages Map assumes its data is always available: simple! Output of Reduce: 2 network copies, 3 disks –In Dryad this collapses inside a single process –Big jobs can be more efficient with Dryad

14 Whats wrong with Map+Reduce? Join combines inputs of different types Split produces outputs of different types –Parse a document, output text and references Can be done with Map+Reduce –Ugly to program –Hard to avoid performance penalty –Some merge joins very expensive Need to materialize entire cross product to disk

15 How about Map+Reduce+Join+…? Uniform stages arent really uniform

16 How about Map+Reduce+Join+…? Uniform stages arent really uniform

17 Graph complexity composes Non-trees common E.g. data-dependent re-partitioning –Combine this with merge trees etc. Distribute to equal-sized ranges Sample to estimate histogram Randomly partitioned inputs

18 Scheduler state machine Scheduling is independent of semantics –Vertex can run anywhere once all its inputs are ready Constraints/hints place it near its inputs –Fault tolerance If A fails, run it again If As inputs are gone, run upstream vertices again (recursively) If A is slow, run another copy elsewhere and use output from whichever finishes first

19 Dryad DAG architecture Simplicity depends on generality –Front ends only see graph data-structures –Generic scheduler state machine Software engineering: clean abstraction Restricting set of operations would pollute scheduling logic with execution semantics Optimizations all above the fold –Dryad exports callbacks so applications can react to state machine transitions

20 Talk outline Computational model Dryad architecture Some case studies DryadLINQ overview Summary

21 SkyServer DB Query 3-way join to find gravitational lens effect Table U: (objId, color) 11.8GB Table N: (objId, neighborId) 41.8GB Find neighboring stars with similar colors: –Join U+N to find T = U.color,N.neighborId where U.objId = N.objId –Join U+T to find U.objId where U.objId = T.neighborID and U.color T.color

22 Took SQL plan Manually coded in Dryad Manually partitioned data SkyServer DB query u: objid, color n: objid, neighborobjid [partition by objid] select u.color,n.neighborobjid from u join n where u.objid = n.objid (u.color,n.neighborobjid) [re-partition by n.neighborobjid] [order by n.neighborobjid] [distinct] [merge outputs] select u.objid from u join where u.objid =.neighborobjid and |u.color -.color| < d

23 Optimization D M S Y X M S M S M S UN U

24 D M S Y X M S M S M S UN U

25 Number of Computers Speed-up Dryad In-Memory Dryad Two-pass SQLServer 2005

26 Query histogram computation Input: log file (n partitions) Extract queries from log partitions Re-partition by hash of query (k buckets) Compute histogram within each bucket

27 Naïve histogram topology Pparse lines D hash distribute S quicksort C count occurrences MSmerge sort

28 Efficient histogram topology Pparse lines D hash distribute S quicksort C count occurrences MSmerge sort M non-deterministic merge Q' is:Each R is: Each MS C M P C S Q' RR k T k n T is: Each MS D C

29 RR T Q MSCD MPSC MSC Pparse linesDhash distribute SquicksortMSmerge sort Ccount occurrencesMnon-deterministic merge R

30 MSCD MPSC MSC Pparse linesDhash distribute SquicksortMSmerge sort Ccount occurrencesMnon-deterministic merge RR T R QQQQ

31 MSCD MPSC MSC Pparse linesDhash distribute SquicksortMSmerge sort Ccount occurrencesMnon-deterministic merge RR T R QQQQ T

32 MSCD MPSC MSC Pparse linesDhash distribute SquicksortMSmerge sort Ccount occurrencesMnon-deterministic merge RR T R QQQQ T

33 Pparse linesDhash distribute SquicksortMSmerge sort Ccount occurrencesMnon-deterministic merge MSCD MPSC MSC RR T R QQQQ T

34 Pparse linesDhash distribute SquicksortMSmerge sort Ccount occurrencesMnon-deterministic merge MSCD MPSC MSC RR T R QQQQ T

35 Final histogram refinement 1,800 computers 43,171 vertices 11,072 processes 11.5 minutes

36 Optimizing Dryad applications General-purpose refinement rules Processes formed from subgraphs –Re-arrange computations, change I/O type Application code not modified –System at liberty to make optimization choices High-level front ends hide this from user –SQL query planner, etc.

37 Talk outline Computational model Dryad architecture Some case studies DryadLINQ overview Summary

38 DryadLINQ (Yuan Yu) LINQ: Relational queries integrated in C# More general than distributed SQL –Inherits flexible C# type system and libraries –Data-clustering, EM, inference, … Uniform data-parallel programming model –From SMP to clusters

39 LINQ Collection collection; bool IsLegal(Key); string Hash(Key); var results = from c in collection where IsLegal(c.key) select new { Hash(c.key), c.value};

40 Collection collection; bool IsLegal(Key k); string Hash(Key); var results = from c in collection where IsLegal(c.key) select new { Hash(c.key), c.value}; DryadLINQ = LINQ + Dryad C# collection results C# Vertex code Query plan (Dryad job) Data

41 Linear Regression Code PartitionedVector xx = x.PairwiseMap( x, (a, b) => DoubleMatrix.OuterProduct(a, b)); Scalar xxm = xx.Reduce( (a, b) => DoubleMatrix.Add(a, b), z); PartitionedVector yx = y.PairwiseMap( x, (a, b) => DoubleMatrix.OuterProduct(a, b)); Scalar yxm = yx.Reduce( (a, b) => DoubleMatrix.Add(a, b), z); Scalar xxinv = xxm.Apply(a => DoubleMatrix.Inverse(a)); Scalar result = xxinv.Apply(yxm, (a, b) => DoubleMatrix.Multiply(a, b));

42 Expectation Maximization 190 lines 3 iterations shown

43 Understanding Botnet Traffic using EM 3 GB data 15 clusters 60 computers 50 iterations 9000 processes 50 minutes

44 Summary General-purpose platform for scalable distributed data-processing of all sorts Very flexible –Optimizations can get more sophisticated Designed to be used as middleware –Slot different programming models on top –LINQ is very powerful


Download ppt "Distributed Data-Parallel Programming using Dryad Andrew Birrell, Mihai Budiu, Dennis Fetterly, Michael Isard, Yuan Yu Microsoft Research Silicon Valley."

Similar presentations


Ads by Google