cluster computing with dryad

68
Cluster Computing with DryadLINQ Mihai Budiu Microsoft Research, Silicon Valley Cloud computing: Infrastructure, Services, and Applications UC Berkeley, March 4 2009

Upload: butest

Post on 10-May-2015

1.407 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cluster Computing with Dryad

Cluster Computing with DryadLINQ

Mihai Budiu Microsoft Research, Silicon Valley

Cloud computing: Infrastructure, Services, and ApplicationsUC Berkeley, March 4 2009

Page 2: Cluster Computing with Dryad

2

Goal

Page 3: Cluster Computing with Dryad

3

Design Space

ThroughputLatency

Internet

Privatedata

center

Data-parallel

Sharedmemory

DryadSearch

HPC

Grid

Transaction

Page 4: Cluster Computing with Dryad

Execution

Application

Data-Parallel Computation

4

Storage

Language

ParallelDatabases

Map-Reduce

GFSBigTable

CosmosAzure

SQL Server

Dryad

DryadLINQScope

Sawzall

Hadoop

HDFSS3

Pig, HiveSQL ≈SQL LINQ, SQLSawzall

Page 5: Cluster Computing with Dryad

5

SQL

Software Stack

Windows Server

Cluster Services

Distributed FS (Cosmos)

Dryad

Distributed Shell

PSQL

DryadLINQSQL

server

Windows Server

Windows Server

Windows Server

C++

NTFS

legacycode

SSISScope

C#MachineLearning

.Net

queu

eing

Distributed Data Structures

GraphsData

mining

Applications

Azure XCompute Windows HPC

Azure XStore SQL Server

Log parsing

Page 6: Cluster Computing with Dryad

6

• Introduction• Dryad • DryadLINQ• Conclusions

Outline

Page 7: Cluster Computing with Dryad

7

Dryad

• Continuously deployed since 2006• Running on >> 104 machines• Sifting through > 10Pb data daily• Runs on clusters > 3000 machines• Handles jobs with > 105 processes each• Platform for rich software ecosystem• Used by >> 100 developers

• Written at Microsoft Research, Silicon Valley

Page 8: Cluster Computing with Dryad

8

Dryad = Execution Layer

Job (application)

Dryad

Cluster

Pipeline

Shell

Machine≈

Page 9: Cluster Computing with Dryad

9

2-D Piping• Unix Pipes: 1-D

grep | sed | sort | awk | perl

• Dryad: 2-D grep1000 | sed500 | sort1000 | awk500 | perl50

Page 10: Cluster Computing with Dryad

10

Virtualized 2-D Pipelines

Page 11: Cluster Computing with Dryad

11

Virtualized 2-D Pipelines

Page 12: Cluster Computing with Dryad

12

Virtualized 2-D Pipelines

Page 13: Cluster Computing with Dryad

13

Virtualized 2-D Pipelines

Page 14: Cluster Computing with Dryad

14

Virtualized 2-D Pipelines• 2D DAG• multi-machine• virtualized

Page 15: Cluster Computing with Dryad

15

Dryad Job Structure

grep

sed

sortawk

perlgrep

grepsed

sort

sort

awk

Inputfiles

Vertices (processes)

Outputfiles

ChannelsStage

Page 16: Cluster Computing with Dryad

16

Channels

X

M

Items

Finite streams of items

• distributed filesystem files (persistent)• SMB/NTFS files (temporary)• TCP pipes (inter-machine)• memory FIFOs (intra-machine)

Page 17: Cluster Computing with Dryad

17

Dryad System Architecture

Files, TCP, FIFO, Networkjob schedule

data plane

control plane

NS PD PDPD

V V V

Job manager cluster

Page 18: Cluster Computing with Dryad

Fault Tolerance

Page 19: Cluster Computing with Dryad

19

Policy Managers

R R

X X X X

Stage RR R

Stage X

Job Manager

R managerX ManagerR-X

Manager

Connection R-X

Page 20: Cluster Computing with Dryad

X[0] X[1] X[3] X[2] X’[2]

Completed vertices Slow vertex

Duplicatevertex

Dynamic Graph Rewriting

Duplication Policy = f(running times, data volumes)

Page 21: Cluster Computing with Dryad

Cluster network topology

rack

top-of-rack switch

top-level switch

Page 22: Cluster Computing with Dryad

22

S S S S

A A A

S S

T

S S S S S S

T

# 1 # 2 # 1 # 3 # 3 # 2

# 3# 2# 1

static

dynamic

rack #

Dynamic Aggregation

Page 23: Cluster Computing with Dryad

23

Policy vs. Mechanism

• Application-level• Most complex in C++

code• Invoked with upcalls• Need good default

implementations• DryadLINQ provides

a comprehensive set

• Built-in• Scheduling• Graph rewriting• Fault tolerance• Statistics and

reporting

Page 24: Cluster Computing with Dryad

24

• Introduction• Dryad • DryadLINQ• Conclusions

Outline

Page 25: Cluster Computing with Dryad

25

LINQ

Dryad

=> DryadLINQ

Page 26: Cluster Computing with Dryad

26

LINQ = .Net+ Queries

Collection<T> collection;bool IsLegal(Key);string Hash(Key);

var results = from c in collection where IsLegal(c.key) select new { Hash(c.key), c.value};

Page 27: Cluster Computing with Dryad

27

Collections and Iteratorsclass Collection<T> : IEnumerable<T>;

public interface IEnumerable<T> {IEnumerator<T> GetEnumerator();

}

public interface IEnumerator <T> {T Current { get; }bool MoveNext();void Reset();

}

Page 28: Cluster Computing with Dryad

28

DryadLINQ Data Model

Partition

Collection

.Net objects

Page 29: Cluster Computing with Dryad

29

Collection<T> 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# C# C#

Vertexcode

Queryplan(Dryad job)Data

Page 30: Cluster Computing with Dryad

30

Demo

Page 31: Cluster Computing with Dryad

31

Example: Histogrampublic static IQueryable<Pair> Histogram( IQueryable<LineRecord> input, int k){ var words = input.SelectMany(x => x.line.Split(' ')); var groups = words.GroupBy(x => x); var counts = groups.Select(x => new Pair(x.Key, x.Count())); var ordered = counts.OrderByDescending(x => x.count); var top = ordered.Take(k); return top;}

“A line of words of wisdom”

[“A”, “line”, “of”, “words”, “of”, “wisdom”]

[[“A”], [“line”], [“of”, “of”], [“words”], [“wisdom”]]

[ {“A”, 1}, {“line”, 1}, {“of”, 2}, {“words”, 1}, {“wisdom”, 1}]

[{“of”, 2}, {“A”, 1}, {“line”, 1}, {“words”, 1}, {“wisdom”, 1}]

[{“of”, 2}, {“A”, 1}, {“line”, 1}]

Page 32: Cluster Computing with Dryad

32

Histogram Plan

SelectManySort

GroupBy+SelectHashDistribute

MergeSortGroupBy

SelectSortTake

MergeSortTake

Page 33: Cluster Computing with Dryad

33

Map-Reduce in DryadLINQ

public static IQueryable<S> MapReduce<T,M,K,S>( this IQueryable<T> input, Expression<Func<T, IEnumerable<M>>> mapper, Expression<Func<M,K>> keySelector, Expression<Func<IGrouping<K,M>,S>> reducer) { var map = input.SelectMany(mapper); var group = map.GroupBy(keySelector); var result = group.Select(reducer); return result;}

Page 34: Cluster Computing with Dryad

34

Map-Reduce Plan

M

R

G

M

Q

G1

R

D

MS

G2

R

static dynamic

X

X

M

Q

G1

R

D

MS

G2

R

X

M

Q

G1

R

D

MS

G2

R

X

M

Q

G1

R

D

M

Q

G1

R

D

MS

G2

R

X

M

Q

G1

R

D

MS

G2

R

X

M

Q

G1

R

D

MS

G2

R

MS

G2

R

map

sort

groupby

reduce

distribute

mergesort

groupby

reduce

mergesort

groupby

reduce

consumer

map

parti

al a

ggre

gatio

nre

duce

S S S S

A A A

S S

T

dynamic

Page 35: Cluster Computing with Dryad

35

Distributed Sorting Plan

O

DS

H

D

M

S

DS

H

D

M

S

DS

D

DS

H

D

M

S

DS

D

M

S

M

S

static dynamic dynamic

Page 36: Cluster Computing with Dryad

Expectation Maximization

36

• 160 lines • 3 iterations shown

Page 37: Cluster Computing with Dryad

37

Probabilistic Index MapsImages

features

Page 38: Cluster Computing with Dryad

38

Language Summary

WhereSelectGroupByOrderByAggregateJoinApplyMaterialize

Page 39: Cluster Computing with Dryad

39

LINQ System Architecture

Local machine

.Netprogram(C#, VB, F#, etc)

LINQProvider

Execution engine

Query

Objects

•LINQ-to-obj•PLINQ•LINQ-to-SQL•LINQ-to-WS•DryadLINQ•Flickr•Oracle•LINQ-to-XML•Your own

Page 40: Cluster Computing with Dryad

The DryadLINQ Provider

40

DryadLINQClient machine

(11)

Distributedquery plan

.Net

Query Expr

Data center

Output TablesResults

Input TablesInvoke Query

Output DryadTable

Dryad Execution

.Net Objects

Dryad JM

ToCollection

foreach

Vertexcode

Con-text

Page 41: Cluster Computing with Dryad

41

Combining Query Providers

PLINQ

Local machine

.Netprogram(C#, VB, F#, etc)

LINQProvider

Execution engines

Query

Objects

SQL Server

DryadLINQ

LINQProvider

LINQProvider

LINQProvider

LINQ-to-obj

Page 42: Cluster Computing with Dryad

42

Using PLINQQuery

DryadLINQ

PLINQ

Local query

Page 43: Cluster Computing with Dryad

43

LINQ to SQL

Using LINQ to SQL Server

Query

DryadLINQ

Query Query Query

Query Query

LINQ to SQL

Page 44: Cluster Computing with Dryad

44

Using LINQ-to-objects

Query

DryadLINQ

Local machine

Cluster

LINQ to obj

debug

production

Page 45: Cluster Computing with Dryad

45

• Introduction• Dryad • DryadLINQ• Conclusions

Outline

Page 46: Cluster Computing with Dryad

46

Lessons Learned (1)

• What worked well?– Complete separation of

storage / execution / language– Using LINQ +.Net (language integration)– Strong typing for data– Allowing flexible and powerful policies– Centralized job manager: no replication, no

consensus, no checkpointing– Porting (HPC, Cosmos, Azure, SQL Server) – Technology transfer (done at the right time)

Page 47: Cluster Computing with Dryad

47

Lessons Learned (2)

• What worked less well– Error handling and propagation– Distributed (randomized) resource allocation– TCP pipe channels– Hierarchical dataflow graphs

(each vertex = small graph)– Forking the source tree

Page 48: Cluster Computing with Dryad

48

Lessons Learned (3)• Tricks of the trade

– Asynchronous operations hide latency– Management through distributed state machines– Logging state transitions for debugging– Complete separation of data and control– Leases clean-up after themselves– Understand scaling factors

O(machines) < O(vertices) < O(edges)

– Don’t fix a broken API, re-design it– Compression trades-off bandwidth for CPU– Managed code increases productivity by 10x10

Page 49: Cluster Computing with Dryad

49

Ongoing Dryad/DryadLINQ Research

• Performance modeling• Scheduling and resource allocation• Profiling and performance debugging• Incremental computation• Hardware acceleration• High-level programming abstractions• Many domain-specific applications

Page 50: Cluster Computing with Dryad

50

Sample applications written using DryadLINQ Class

Distributed linear algebra Numerical

Accelerated Page-Rank computation Web graph

Privacy-preserving query language Data mining

Expectation maximization for a mixture of Gaussians Clustering

K-means Clustering

Linear regression Statistics

Probabilistic Index Maps Image processing

Principal component analysis Data mining

Probabilistic Latent Semantic Indexing Data mining

Performance analysis and visualization Debugging

Road network shortest-path preprocessing Graph

Botnet detection Data mining

Epitome computation Image processing

Neural network training Statistics

Parallel machine learning framework infer.net Machine learning

Distributed query caching Optimization

Image indexing Image processing

Web indexing structure Web graph

Page 51: Cluster Computing with Dryad

Conclusions

51

Visual Studio

LINQ

Dryad

51

=

Page 52: Cluster Computing with Dryad

52

“What’s the point if I can’t have it?”

• Glad you asked• We’re offering Dryad+DryadLINQ to

academic partners• Dryad is in binary form, DryadLINQ in source• Requires signing a 3-page licensing agreement

Page 53: Cluster Computing with Dryad

53

Backup Slides

Page 54: Cluster Computing with Dryad

54

DryadLINQ

• Declarative programming • Integration with Visual Studio• Integration with .Net• Type safety• Automatic serialization• Job graph optimizations static dynamic

• Conciseness

Page 55: Cluster Computing with Dryad

55

What does DryadLINQ do?public struct Data { … public static int Compare(Data left, Data right);}

Data g = new Data();var result = table.Where(s => Data.Compare(s, g) < 0);

public static void Read(this DryadBinaryReader reader, out Data obj); public static int Write(this DryadBinaryWriter writer, Data obj);

public class DryadFactoryType__0 : LinqToDryad.DryadFactory<Data>

DryadVertexEnv denv = new DryadVertexEnv(args);var dwriter__2 = denv.MakeWriter(FactoryType__0);var dreader__3 = denv.MakeReader(FactoryType__0);var source__4 = DryadLinqVertex.Where(dreader__3,

s => (Data.Compare(s, ((Data)DryadLinqObjectStore.Get(0))) < ((System.Int32)(0))), false);

dwriter__2.WriteItemSequence(source__4);

Data serialization

Data factory

Channel writerChannel reader

LINQ code

Context serialization

Page 56: Cluster Computing with Dryad

TT[0-?) [?-100)

Range-Distribution Manager

S

D D D

S S

S S S

Tstatic

dynamic56

Hist

[0-30),[30-100)

[30-100)[0-30)

[0-100)

Page 57: Cluster Computing with Dryad

JM code

vertex code

Staging1. Build

2. Send .exe

3. Start JM

5. Generate graph

7. Serializevertices

8. MonitorVertex execution

4. Querycluster resources

Cluster services6. Initialize vertices

Page 58: Cluster Computing with Dryad

58

BibliographyDryad: Distributed Data-Parallel Programs from Sequential Building BlocksMichael Isard, Mihai Budiu, Yuan Yu, Andrew Birrell, and Dennis FetterlyEuropean Conference on Computer Systems (EuroSys), Lisbon, Portugal, March 21-23, 2007

DryadLINQ: A System for General-Purpose Distributed Data-Parallel Computing Using a High-Level LanguageYuan Yu, Michael Isard, Dennis Fetterly, Mihai Budiu, Úlfar Erlingsson, Pradeep Kumar Gunda, and Jon CurreySymposium on Operating System Design and Implementation (OSDI), San Diego, CA, December 8-10, 2008

SCOPE: Easy and Efficient Parallel Processing of Massive Data SetsRonnie Chaiken, Bob Jenkins, Per-Åke Larson, Bill Ramsey, Darren Shakib, Simon Weaver, and Jingren ZhouVery Large Databases Conference (VLDB), Auckland, New Zealand, August 23-28 2008

Hunting for problems with ArtemisGabriela F. Creţu-Ciocârlie, Mihai Budiu, and Moises GoldszmidtUSENIX Workshop on the Analysis of System Logs (WASL), San Diego, CA, December 7, 2008

Page 59: Cluster Computing with Dryad

59

Data Partitioning

RAM

DATA

DATA

Page 60: Cluster Computing with Dryad

60

Linear Algebra & Machine Learning in DryadLINQ

Dryad

DryadLINQ

Large Vector

Machine learningData analysis

Page 61: Cluster Computing with Dryad

61

Operations on Large Vectors: Map 1

U

T

T Uf

f

f preserves partitioning

Page 62: Cluster Computing with Dryad

62

V

Map 2 (Pairwise)

T Uf

V

U

T

f

Page 63: Cluster Computing with Dryad

63

Map 3 (Vector-Scalar)T U

fV

V

63

U

T

f

Page 64: Cluster Computing with Dryad

Reduce (Fold)

64

U UU

U

f

f f f

fU U U

U

Page 65: Cluster Computing with Dryad

65

Linear Algebra

T U Vnmm ,,=, ,

T

Page 66: Cluster Computing with Dryad

66

Linear Regression

• Data

• Find

• S.t.

mt

nt yx ,

mnA

tt yAx

},...,1{ nt

Page 67: Cluster Computing with Dryad

67

Analytic Solution

X×XT X×XT X×XT Y×XT Y×XT Y×XT

Σ

X[0] X[1] X[2] Y[0] Y[1] Y[2]

Σ

[ ]-1

*

A

1))(( Ttt t

Ttt t xxxyA

Map

Reduce

Page 68: Cluster Computing with Dryad

68

Linear Regression Code

Vectors x = input(0), y = input(1);Matrices xx = x.Map(x, (a,b) => a.OuterProd(b));OneMatrix xxs = xx.Sum();Matrices yx = y.Map(x, (a,b) => a.OuterProd(b));OneMatrix yxs = yx.Sum();OneMatrix xxinv = xxs.Map(a => a.Inverse());OneMatrix A = yxs.Map(xxinv, (a, b) => a.Mult(b));

1))(( Ttt t

Ttt t xxxyA