fast data: reactive systems meet big...

59
Fast Data: Reactive Systems Meet Big Data February 25, 2016 [email protected] @deanwampler ©Dean Wampler 2014-2016, All Rights Reserved

Upload: others

Post on 22-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

1

Fast Data: Reactive Systems Meet Big Data

February25,[email protected]@deanwampler ©Dean Wampler 2014-2016, All Rights Reserved

Page 2: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

lightbend.com/fast-data

2

Page 3: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Motivation:

3

eCommerce

Page 4: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Cyber Monday?

4

Page 5: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

On demand?

5

Page 6: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Motivation:

6

Internet of Things

Page 7: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

7

Medical Devices,IT Systems

Page 8: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

8

Aircraft Engines

Page 9: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

9

Trucks, Farm Equipment

Page 10: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

10

Remote Sensors

Page 11: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

11

Robotics

Page 12: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

12

Health Monitoring,Home Automation

Page 13: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

13

Reactive Systems

Page 14: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

1420

Message Driven

ResilientElastic

Responsive

Page 15: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Message Driven

ResilientElastic

Responsive

15

Page 16: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Message Driven

ResilientElastic

Responsive

16

Page 17: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

17

Requests or commandsrequire timely responses.

ResilientElastic

Responsive

Page 18: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

18

Responsive

Page 19: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

19

Requires predictableresponse times

and quality of service.

Responsive

Page 20: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

20

Requires pre-plannedgraceful degradation

of service.

Responsive

Page 21: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

21

Awareness of timeis first class.

Responsive

Page 22: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Message Driven

ResilientElastic

Responsive

22

Page 23: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

23

Recovers from errors

Message Driven

ResilientElastic

Responsive

Page 24: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

24

Resilient

Page 25: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

25

Resilient

Failure isnot disruptive.

It’s routine.

Page 26: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

26

Resilient

Therefore, failure is a

first class concept.

Page 27: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Message Driven

ResilientElastic

Responsive

27

Page 28: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

28

Scale up and down

Message Driven

ResilientElastic

Responsive

Page 29: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

29

Elastic

Page 30: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

30

Elastic

Detect changinginput patterns.Automaticallyadjust services.

Page 31: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

31

Elastic

No bottlenecksor contention points.

Page 32: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Message Driven

ResilientElastic

Responsive

32

Page 33: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

33

To react, you must be message driven.

Message Driven

ResilientElastic

Page 34: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Message Driven

34

Page 35: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

35

Asynchronousmessage passing.

Message Driven

Page 36: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

36

Defines boundaries, promotes loose coupling

and isolation.

Message Driven

Page 37: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

37

Fast Data

Page 38: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

38

Spark

Page 39: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

39

Productivity?

Very concise, elegant, functional APIs.•Python, R•Scala, Java

•... and SQL!

Page 40: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

40

Productivity?

Interactive shell (REPL)•Scala, Python, R, and SQL!•“Notebooks”

Page 41: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

41

Batch + Streaming?

Streams - “mini batch” processing:•Reuse “batch” code•Adds “window” functions•“Discretized Streams”: DStreams

Page 42: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

42

Page 43: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

43

import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._

val sparkContext = new SparkContext(master, “Inv. Index”)sparkContext.textFile("/path/to/input").map { line => val array = line.split(",", 2) (array(0), array(1))}.flatMap { case (id, contents) => toWords(contents).map(w => ((w,id),1))}.reduceByKey(_ + _).map { case ((word,id),n) => (word,(id,n))}.groupByKey.mapValues { seq => sortByCount(seq)}.saveAsTextFile("/path/to/output")

Powerful,beautiful

combinators

Page 44: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

44

reduceByKey

flatMap

textFile

map

map

groupByKey

map

saveAsTextFile

Lazy API, inspired by Scala collections.•Combines steps into “stages”. •Keeps intermediate data in

memory.

Page 45: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

45

Page 46: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

46

Page 47: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

47

Page 48: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

48

•Message Queue Semantics•Log-oriented ingestion, scalability

n+5

n+4

n+3

n+2

n+1 n

Consumer 1

Producer 1

Producer 2

n+?

n+?

Consumer 2

Topic A

Page 49: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

49

Service 1

Log & Other Files

Internet

Services

Service 2

Service 3

Services

Services

N * M links ConsumersProducers

Page 50: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

50

Service 1

Log & Other Files

Internet

Services

Service 2

Service 3

Services

Services

N + M links ConsumersProducers

Page 51: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Reactive Streams

51

reactive-streams.org

Page 52: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

52

Even

t

Even

t

Even

t

Even

t

Even

t

Even

tEvent/Data Stream

Consumer

Consumerfeedback

feedback

feedback

Page 53: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Unbounded queues eventually exhaust the heap.

53

Reactive Streams

Even

t

Even

t

Even

t

Even

t

Even

t

Even

tEvent/Data Stream

Consumer

Consumerfeedback

feedback

feedback

Page 54: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Bounded queues cause blocking or arbitrary dropping of events.

54

Reactive Streams

Even

t

Even

t

Even

t

Even

t

Even

t

Even

tEvent/Data Stream

Consumer

Consumerfeedback

feedback

feedback

Page 55: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Solution: Back pressure where the producer and

consumer negotiate.55

Reactive Streams

Page 56: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Reactive Streams over Actors.

56

Akka Streams

Page 57: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

Putting It Together

57

Page 58: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

58

Page 59: Fast Data: Reactive Systems Meet Big Datafiles.meetup.com/8500592/FastData-ReactiveSystemsMeetBigData.pdf41 Batch + Streaming? Streams - “mini batch” processing: •Reuse “batch”

lightbend.com/[email protected]

©Dean Wampler 2014-2016, All Rights Reserved