Transcript
Page 1: Airstream: Spark Streaming At Airbnb

AirStreamLIYIN TANG & JINGWEI LU

Page 2: Airstream: Spark Streaming At Airbnb

Data Infrastructure at Airbnb

Page 3: Airstream: Spark Streaming At Airbnb

Event Logs

MySQL Dumps

Gold Cluster

HDFS

Hive

Kafka

Sqoop

Silver Cluster Spark Cluster

SparkReAir

Airflow Scheduling

S3

Presto Cluster

AirPal

Caravel

Tableau

Batch Infrastructure

Yarn HDFS

Hive

Yarn

Liyin Tang and Jingwei Lu3

Page 4: Airstream: Spark Streaming At Airbnb

Streaming at Airbnb

Event Logging

MySQL BINLOG

Cluster

HDFS

HiveSpinal tap

Presto Cluster

Yarn

Kafka

HBase

Spark Streaming

Datadog

Druid

Kafka

Liyin Tang and Jingwei Lu4

Page 5: Airstream: Spark Streaming At Airbnb

Growing Pain

Page 6: Airstream: Spark Streaming At Airbnb

Stateless

Liyin Tang and Jingwei Lu

Computation SinkSource

DStream DF DF

Page 7: Airstream: Spark Streaming At Airbnb

Stateful

Liyin Tang and Jingwei Lu

ComputationSource

DStream DF DFSink1

Sink2

Sink N

State Storage

RDD

Page 8: Airstream: Spark Streaming At Airbnb

Multiple Streams

Liyin Tang and Jingwei Lu

DataFrameSink1

Process A

Sink2

Sink3

SinkN

DataFrameSink1

Process N

Sink2

Sink3

SinkN

Source

DStream

Align by Time

DataFrame

DataFrame

State

Source

DStream

Page 9: Airstream: Spark Streaming At Airbnb

Streaming + Batch

Liyin Tang and Jingwei Lu

DataFrameSink1

Process A

Sink2

Sink3

SinkN

DataFrame

State

DStream

Align by Time

DataFrameSink1

Process A

Sink2

Sink3

SinkN

Page 10: Airstream: Spark Streaming At Airbnb

Simplify and Unify

Page 11: Airstream: Spark Streaming At Airbnb

AirStream Architecture

Liyin Tang and Jingwei Lu

Sources

Stream #1 Stream #NHive Tables HBase Tables

Virtual Table Views for Computation

Sinks

Customized ComputationSpark SQL

Simple Config

HBase Services Streaming SourcesDruid

Page 12: Airstream: Spark Streaming At Airbnb

AirStream Architecture

Liyin Tang and Jingwei Lu

Sources

Stream #1 Stream #NHive Tables HBase Tables

Virtual Table Views for Computation

Sinks

Customized ComputationSpark SQL

HBase Services Streaming SourcesDruid

Same Computation for Batch processing

Page 13: Airstream: Spark Streaming At Airbnb

Stateful

Page 14: Airstream: Spark Streaming At Airbnb

Liyin Tang and Jingwei Lu

State Store• Merge changes

• Provide fast lookup

• Fast persistent storage across streaming and batch jobs

14

Page 15: Airstream: Spark Streaming At Airbnb

Why HBase

Liyin Tang and Jingwei Lu

Rich Functionalities

Rich Integration with Hadoop EcoSystem

Easy Management

Strong Community

Reliable and Scalable

Page 16: Airstream: Spark Streaming At Airbnb

HBase State StoreOperators in Airstream

Liyin Tang and Jingwei Lu16

Full Table Scan

Simple Aggregation

Bulk Upload

Key/Prefix Lookup

Update

Page 17: Airstream: Spark Streaming At Airbnb

Liyin Tang and Jingwei Lu

Computation DAG

17

Input Data

Left Outer Join Result

Key Lookup

Page 18: Airstream: Spark Streaming At Airbnb

Liyin Tang and Jingwei Lu

Key Space Design

• Hash partition key space for load balance

• Composite key for K -> V

• Support full key lookup

• Prefix lookup supported for all keys used in hash function

Hash key1 key2 key3

Hash based on key prefix

Hash key1 key2

Lookup based on key prefix

key1 = ‘value1’ and key2 = ‘value2’

18

Page 19: Airstream: Spark Streaming At Airbnb

• Partition based on key before write

• Use bulk upload for large volume update

Write Performance

Liyin Tang and Jingwei Lu19

Page 20: Airstream: Spark Streaming At Airbnb

Case Study

Liyin Tang and Jingwei Lu

Experiment realtime feedback

20

Update

Experiment

Assignment Event

LookupHBase

with TTL

Booking Event

Druid Datadog

one airstream

configjob 2 job 1

Page 21: Airstream: Spark Streaming At Airbnb

Realtime Data Ingestion

Page 22: Airstream: Spark Streaming At Airbnb

Realtime Ingestion on HBase

Data Infrastructure

MySQL

Analytical Events

KafkaSpark

Streamin HBase

HDFS Presto/Hive/Spark

Source

Ingest

Realtime Query

Snapshot

Batch Query

Liyin Tang and Jingwei Lu22

Page 23: Airstream: Spark Streaming At Airbnb

Access Data in HBase

Liyin Tang and Jingwei Lu

HBase

Hive PrestoSpark SQL

Spark Streaming

Batch Jobs Interactive Query Streaming

HDFSSnapshot

Table Mapping/Unifed View on realtime data

23

Page 24: Airstream: Spark Streaming At Airbnb

Snapshot & Reseed

Liyin Tang and Jingwei Lu

HBase HDFS

Snapshot HFile Links)

Bulk Upload

24

Page 25: Airstream: Spark Streaming At Airbnb

Case Study 1: Events Ingestion

Liyin Tang and Jingwei Lu

Kafka

topic

topic

topic

Spark

Executor1

Executor

Executor

HBase

DeD

up

HDFS Daily

Realtime

Hive

Presto

Events

Part

ition

25

Page 26: Airstream: Spark Streaming At Airbnb

Case Study 2: Streaming DB Export

Kafka RDS

Table1

Spinaltap.

Table2

TableN

Spinaltap.

Table2

Spinaltap.

TableN

Spark

Executor1

Executor2

Executor K

HBase

Region1

Region2

Region M

HDFS

Daily Snapshot

Realtime Query

Liyin Tang and Jingwei Lu26

Page 27: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

Rows CF: Colums Version Value

<ShardKey><DB_TABLE_#1><PK_a=A> id Fri May 19 00:33:19 2016 101

<ShardKey><DB_TABLE_#1><PK_a=A> city Fri May 19 00:33:19 2016 San Francisco

<ShardKey><DB_TABLE_#1><PK_a=A> city Fri May 10 00:34:19 2016 New York

<ShardKey><DB_TABLE_#2><PK_a=A’> id Fri May 19 00:33:19 2016 1

Liyin Tang and Jingwei Lu27

Page 28: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

TXN 1

Commit_TS: 101

…TXN 2

Commit_TS: 102

TXN 3

Commit_TS: 103

TXN N

Commit_TS: N’

Binlog Order

Liyin Tang and Jingwei Lu28

Page 29: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

TXN 1

Commit_TS: 101

…TXN 2

Commit_TS: 103

TXN 3

Commit_TS: 102

TXN N

Commit_TS: N’

NTP

Binlog Order

Liyin Tang and Jingwei Lu29

Page 30: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

TXN 1

Commit_TS: 101

Binlog Order

TXN 2

Commit_TS: 103

TXN 3

Commit_TS: 102

TXN N

Commit_TS: N’

Point-in-Time Restore on TS 102Liyin Tang and Jingwei Lu

30

Page 31: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

Rows CF: Colums Version Value

<ShardKey><DB_TABLE_#1><PK_a=A> id bin100 101

<ShardKey><DB_TABLE_#1><PK_a=A> city bin101 San Francisco

<ShardKey><DB_TABLE_#1><PK_a=A> city bin102 New York

<ShardKey><DB_TABLE_#2><PK_a=A’> id bin100 1

Liyin Tang and Jingwei Lu31

Page 32: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

Rows Version (Logical Offset) Value

<ShardKey><DB_TABLE_#1><2016-05-23 23><100> 100 mysql-bin.00000:100

<ShardKey><DB_TABLE_#1><2016-05-23 23><101> 101 mysql-bin.00000:101

<ShardKey><DB_TABLE_#1><2016-05-23 23><103> 103 mysql-bin.00000:103

<ShardKey><DB_TABLE_#1><2016-05-24 00><102> 102 mysql-bin.00000:102

Liyin Tang and Jingwei Lu32

Page 33: Airstream: Spark Streaming At Airbnb

Case Study: Streaming DB Export

Rows Version (Logical Offset) Value

<ShardKey><DB_TABLE_#1><2016-05-23 23><100> 100 mysql-bin.00000:100

<ShardKey><DB_TABLE_#1><2016-05-23 23><101> 101 mysql-bin.00000:101

<ShardKey><DB_TABLE_#1><2016-05-23 23><103> 103 mysql-bin.00000:103

<ShardKey><DB_TABLE_#1><2016-05-24 00><102> 102 mysql-bin.00000:102

Liyin Tang and Jingwei Lu33

Page 34: Airstream: Spark Streaming At Airbnb

Operation

Page 35: Airstream: Spark Streaming At Airbnb

Job Management: Scaling up

Config Driver Streaming Job

Yarn

Spark Jobs

Liyin Tang & Jingwei Lu

Config Driver Streaming Job

… … … …

Spark Jobs

Config Driver Streaming Job Spark Jobs

Page 36: Airstream: Spark Streaming At Airbnb

Spark Job 1

Spark Job2

Spark Job N

Concurrent

Liyin Tang & Jingwei Lu

Config Driver Streaming Job

Yarn

Job Management: Scaling up

Page 37: Airstream: Spark Streaming At Airbnb

Job Management: Fault Tolerant

Driver

Spark Job 1

Spark Job2

Spark Job N

Streaming Job

Concurrent

Yarn

Liyin Tang & Jingwei Lu

OffsetManagement

Mesos

Driver

Driver

Config

Config

Config

……

Checkpoint Rewind

Page 38: Airstream: Spark Streaming At Airbnb

Job Management: Monitoring & Alerting

Driver

Spark Job 1

Spark Job2

Spark Job NStreaming Job

Concurrent

Yarn

…AirStreamListener

Liyin Tang & Jingwei Lu

Page 39: Airstream: Spark Streaming At Airbnb

Summary

Liyin Tang and Jingwei Lu

Simplify and Unify Stream Batch Pipeline

Rich Stateful Computation

Rich Integration with Hadoop EcoSystem

Easy Operation

Page 40: Airstream: Spark Streaming At Airbnb

40


Top Related