Top Banner
Apache Flink® Training System Overview June 15th, 2015
34

Apache Flink Training - System Overview

Aug 13, 2015

Download

Education

dataArtisans
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Apache Flink Training - System Overview

Apache Flink® Training

System Overview

June 15th, 2015

Page 2: Apache Flink Training - System Overview

What is Apache Flink?

2

Gelly

Table

ML

SA

MO

A

DataSet (Java/Scala/Python)DataStream (Java/Scala)

Hadoop M

/R

Local Remote Yarn Tez Embedded

Data

flow

Data

flow

(W

iP)

MR

QL

Table

Casc

adin

g

(WiP

)

Streaming dataflow runtime

A Top-Level project of the Apache Software Foundation

Page 3: Apache Flink Training - System Overview

3

What is Apache Flink?

Large-scale data processing engine

Easy and powerful APIs for batch and streaming analysis (Java / Scala / Python)

Backed by a robust execution backend• with true streaming capabilities,• sophisticated windowing mechanisms,• custom memory manager,• native iteration execution,• and a cost-based optimizer.

Page 4: Apache Flink Training - System Overview

Native workload support

4

Flink

Stream processing

Batchprocessing

Machine Learning at scale

How can an engine natively support all these workloads?

And what does "native" mean?

Graph Analysis

Page 5: Apache Flink Training - System Overview

E.g.: Non-native iterations

5

Step Step Step Step Step

Client

for (int i = 0; i < maxIterations; i++) {// Execute MapReduce job

}

Page 6: Apache Flink Training - System Overview

E.g.: Non-native streaming

6

streamdiscretizer

Job Job Job Jobwhile (true) { // get next few records // issue batch job}

Page 7: Apache Flink Training - System Overview

Native workload support

7

Flink

Streaming topologies

Heavy batch jobs

Machine Learning at scale

How can an engine natively support all these workloads?

And what does native mean?

Page 8: Apache Flink Training - System Overview

Flink Engine

1. Execute everything as streams

2. Allow some iterative (cyclic) dataflows

3. Allow some mutable state

4. Operate on managed memory

5. Special code paths for batch8

Page 9: Apache Flink Training - System Overview

What is a Flink Program?

9

Page 10: Apache Flink Training - System Overview

Gelly

Table

ML

SA

MO

A

DataSet (Java/Scala/Python)DataStream (Java/Scala)

Hadoop M

/R

Local Remote Yarn Tez Embedded

Data

flow

Data

flow

(W

iP)

MR

QL

Table

Casc

adin

g

(WiP

)Streaming dataflow

runtime

Flink stack

Page 11: Apache Flink Training - System Overview

DataSet

Used for Batch Processing

11

Data Set Operation Data

SetSource

Example: Map and Reduce operation

Sink

b h

2 1

3 5

7 4

… …

Map Reduce

a

12

Page 12: Apache Flink Training - System Overview

Scaling out Scale out arbitrarily by setting the parallelism

12

Data Set Operation Data

SetSource Sink

2Data Set Operation Data

SetSource SinkData Set Operation Data

SetSource Sink

4Data Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource Sink

8

Data Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource SinkData Set Operation Data

SetSource Sink

1

Page 13: Apache Flink Training - System Overview

13

Scaling up

Page 14: Apache Flink Training - System Overview

DataStream

Real-time event streams

14

Data Stream Operation Data

StreamSource Sink

Stock FeedName Price

Microsoft 124

Google 516

Apple 235

… …

Alert if Microsoft

> 120

Write event to database

Sum every 10

seconds

Alert if sum > 10000

Microsoft 124

Google 516Apple 235

Microsoft 124

Google 516

Apple 235

Example: Stream from a live stock feed

Page 15: Apache Flink Training - System Overview

Sources (selection)

File-based TextInputFormat CsvInputFormat Collection-based fromCollection fromElements

15

Page 16: Apache Flink Training - System Overview

Sinks (selection)

File-based TextOuputFormat CsvOutputFormat PrintOutput

16

Page 17: Apache Flink Training - System Overview

Hadoop Integration

Out of the box Access HDFS Yarn Execution (covered later) Reuse data types (Writables)

With a thin wrapper Reuse Hadoop input and output

formats Reuse functions like Map and Reduce

17

Page 18: Apache Flink Training - System Overview

What’s the Lifecycle of a Program?

18

Page 19: Apache Flink Training - System Overview

Architecture Overview

Client Master (Job Manager) Worker (Task Manager)

20

Client

Job Manager

Task Manager

Task Manager

Task Manager

Page 20: Apache Flink Training - System Overview

Client

Optimize Construct job graph Pass job graph to job manager Retrieve job results

21

Job Manager

Client

case class Path (from: Long, to: Long)val tc = edges.iterate(10) { paths: DataSet[Path] => val next = paths .join(edges) .where("to") .equalTo("from") { (path, edge) => Path(path.from, edge.to) } .union(paths) .distinct() next }

Optimizer

Type extraction

Data Sourceorders.tbl

Filter

MapDataSour

celineitem.tbl

JoinHybrid Hash

buildHT

probe

hash-part [0] hash-part [0]

GroupRed

sort

forward

Page 21: Apache Flink Training - System Overview

Job Manager

Parallelization: Create Execution Graph Scheduling: Assign tasks to task

managers State tracking: Supervise the execution

22

Job Manager

Data Sourceorders.tbl

Filter

MapDataSou

rcelineitem.tbl

JoinHybrid Hash

buildHT

probe

hash-part [0]

hash-part [0]

GroupRed

sort

forward

Task Manager

Task Manager

Task Manager

Task Manager

Data Sourceorders.tbl

Filter

MapDataSou

rcelineitem.tbl

JoinHybrid Hash

buildHT

probe

hash-part [0]

hash-part [0]

GroupRed

sort

forward

Data Sourceorders.tbl

Filter

MapDataSou

rcelineitem.tbl

JoinHybrid Hash

buildHT

probe

hash-part [0]

hash-part [0]

GroupRed

sort

forward

Data Sourceorders.tbl

Filter

MapDataSou

rcelineitem.tbl

JoinHybrid Hash

buildHT

probe

hash-part [0]

hash-part [0]

GroupRed

sort

forward

Data Sourceorders.tbl

Filter

MapDataSou

rcelineitem.tbl

JoinHybrid Hash

buildHT

probe

hash-part [0]

hash-part [0]

GroupRed

sort

forward

Page 22: Apache Flink Training - System Overview

Task Manager

Operations are split up into tasks depending on the specified parallelism

Each parallel instance of an operation runs in a separate task slot

The scheduler may run several tasks from different operators in one task slot

23

Task Manager

Slot

Task ManagerTask Manager

Slot

Slot

Page 23: Apache Flink Training - System Overview

Execution Setups

24

Page 24: Apache Flink Training - System Overview

Ways to Run a Flink Program

25

Gelly

Table

ML

SA

MO

A

DataSet (Java/Scala/Python)DataStream (Java/Scala)

Hadoop M

/R

Local Remote Yarn Tez Embedded

Data

flow

Data

flow

(W

iP)

MR

QL

Table

Casc

adin

g

(WiP

)Streaming dataflow

runtime

Page 25: Apache Flink Training - System Overview

Local Execution

Starts local Flink cluster

All processes run in the same JVM

Behaves just like a regular Cluster

Very useful for developing and debugging

26

Job Manager

Task Manager

Task Manager

Task Manager

Task Manager

JVM

Page 26: Apache Flink Training - System Overview

Embedded Execution

Runs operators on simple Java collections

Lower overhead Does not use memory management Useful for testing and debugging

27

Page 27: Apache Flink Training - System Overview

Remote Execution

The cluster mode Submit a Job

remotely Monitors the

status of the job

28

Client Job Manager

Cluster

Task Manager

Task Manager

Task Manager

Task Manager

Submit job

Page 28: Apache Flink Training - System Overview

YARN Execution

Multi user scenario

Resource sharing Uses YARN

containers to run a Flink cluster

Very easy to setup Flink

29

Client

Node Manager

Job Manager

YARN Cluster

Resource Manager

Node Manager

Task Manager

Node Manager

Task Manager

Node Manager

Other Application

Page 29: Apache Flink Training - System Overview

Execution

Leverages Apache Tez’s runtime Built on top of YARN Good YARN citizen Fast path to elastic deployments Slower than Flink

30

Page 30: Apache Flink Training - System Overview

Flink compared to other projects

31

Page 31: Apache Flink Training - System Overview

Batch & Streaming projectsBatch only

Streaming only

Hybrid

32

Page 32: Apache Flink Training - System Overview

Batch comparison

35

API low-level high-level high-level

Data Transfer batch batch pipelined & batch

Memory Management disk-based JVM-managed Active managed

Iterations file systemcached

in-memory cached streamed

Fault tolerance task level task level job level

Good at massive scale out data exploration heavy backend & iterative jobs

Libraries many external built-in & external evolving built-in & external

Page 33: Apache Flink Training - System Overview

Streaming comparison

36

Streaming “true” mini batches “true”

API low-level high-level high-level

Fault tolerance tuple-level ACKs RDD-based (lineage) coarse checkpointing

State not built-in external internal

Exactly once at least once exactly once exactly once

Windowing not built-in restricted flexible

Latency low medium low

Throughput medium high high

Page 34: Apache Flink Training - System Overview

Thank you for listening!

37