• No results found

STREAM PROCESSING AT LINKEDIN: APACHE KAFKA & APACHE SAMZA. Processing billions of events every day

N/A
N/A
Protected

Academic year: 2021

Share "STREAM PROCESSING AT LINKEDIN: APACHE KAFKA & APACHE SAMZA. Processing billions of events every day"

Copied!
45
0
0

Loading.... (view fulltext now)

Full text

(1)

STREAM PROCESSING AT

LINKEDIN: APACHE KAFKA &

APACHE SAMZA

Processing billions of events every day

(2)

Neha Narkhede

¨  Co-founder and Head of Engineering @ Stealth

Startup

¨  Prior to this…

¤  Lead, Streams Infrastructure @ LinkedIn (Kafka &

Samza)

¤  One of the initial authors of Apache Kafka, committer

and PMC member

¨  Reach out at @nehanarkhede

(3)

Agenda

¨  Real-time Data Integration

¨  Introduction to Logs & Apache Kafka

¨  Logs & Stream processing

¨  Apache Samza

¨  Stateful stream processing

(4)

The Data Needs Pyramid

Physiological Safety Love/Belonging

Esteem Self

actualization

Maslow's hierarchy of needs

Data collection Data processing

Understanding Automation

Data needs

(5)

Agenda

¨  Real-time Data Integration

¨  Introduction to Logs & Apache Kafka

¨  Logs & Stream processing

¨  Apache Samza

¨  Stateful stream processing

(6)

Increase in diversity of data

1980+

2000+

2010+

Siloed data feeds Database data (users, products, orders etc)

IoT sensors

Events (clicks, impressions, pageviews) Application logs (errors, service calls)

Application metrics (CPU usage, requests/sec)

(7)

Explosion in diversity of systems

¨  Live Systems

¤  Voldemort

¤  Espresso

¤  GraphDB

¤  Search

¤  Samza

¨  Batch

¤  Hadoop

¤  Teradata

(8)

Data integration disaster

Oracle Oracle

Oracle User Tracking

Hadoop Log

Search Monitoring

Data Warehous

e

Social Graph

Rec.

Engine Search Email

Voldemort Voldemort Voldemort Espresso

Espresso Espresso

Logs Operational Metrics

Production Services

...

Security

(9)

Centralized service

Oracle Oracle

Oracle User Tracking

Hadoop Log

Search

Monitorin g

Data Warehous

e

Social Graph

Rec Engine &

Life

Search Email

Voldemort Voldemort Voldemort Espresso

Espresso Espresso

Logs Operational Metrics

Production Services

...

Security Data Pipeline

(10)

Agenda

¨  Real-time Data Integration

¨  Introduction to Logs &

Apache Kafka

¨  Logs & Stream processing

¨  Apache Samza

¨  Stateful stream processing

(11)

Kafka at 10,000 ft

¨  Distributed from

ground up

¨  Persistent

¨  Multi-subscriber

Cluster of brokers Producer

Producer Producer

Producer Producer

Producer

Producer

Consumer Producer

Consumer Producer

Consumer

(12)

Key design principles

¨  Scalability of a file system

¤  Hundreds of MB/sec/server throughput

¤  Many TBs per server

¨  Guarantees of a database

¤  Messages strictly ordered

¤  All data persistent

¨  Distributed by default

¤  Replication model

¤  Partitioning model

(13)

Kafka adoption

(14)

Apache Kafka @ LinkedIn

¨  175 TB of in-flight log data per colo

¨  Low-latency: ~1.5ms

¨  Replicated to each datacenter

¨  Tens of thousands of data producers

¨  Thousands of consumers

¨  7 million messages written/sec

¨  35 million messages read/sec

¨  Hadoop integration

(15)

The data structure every systems engineer should

know

Logs

(16)

The Log

¨  Ordered

¨  Append only

¨  Immutable

0 1 2 3 4 5 6 7 8 9 10 11 12

1st record next record written

(17)

The Log: Partitioning

0 1 2 3 4 5 6 7 8 9 10 11 12 Partition 0

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9 10 11 12 Partition 1

Partition 2 13 14 15 16

(18)

Logs: pub/sub done right

0 1 2 3 4 5 6 7 8 9 10 11 12 writes Data source

Destination system A

Destination system B

reads reads

(19)

Logs for data integration

User updates profile with

new job

Newsfeed

KAFKA

Search Hadoop Standardization

engine

(20)

Agenda

¨  Real-time Data Integration

¨  Introduction to Logs & Apache Kafka

¨  Logs & Stream processing

¨  Apache Samza

¨  Stateful stream processing

(21)

Stream processing = f(log)

Log A Job 1 Log B

(22)

Stream processing = f(log)

Log A Job 1

Job 2

Log B Log C

Log D Log E

(23)

Apache Samza at LinkedIn

User updates profile with

new job

Newsfeed

KAFKA

Search Hadoop Standardization

engine

(24)

Latency spectrum of data systems

Synchronous (milliseconds)

RPC

Batch (Hours)

Latency

Asynchronous processing (seconds to minutes)

(25)

Agenda

¨  Real-time Data Integration

¨  Introduction to Logs & Apache Kafka

¨  Logs & Stream processing

¨  Apache Samza

¨  Stateful stream processing

(26)

Samza API

public interface StreamTask {

void process (IncomingMessageEnvelope envelope,

MessageCollector collector,

TaskCoordinator coordinator);

}

getKey(), getMsg()

sendMsg(topic, key, value)

commit(), shutdown()

(27)

Samza Architecture (Logical view)

Task 1 Task 2 Task 3

Log A

Log B

partition 0 partition 1 partition 2

partition 0 partition 1

(28)

Samza Architecture (Logical view)

Task 1 Task 2 Task 3

Log A

Log B

partition 0 partition 1 partition 2

partition 0 partition 1

Samza container 1 Samza container 2

(29)

Samza Architecture (Physical view)

Samza container 1 Samza container 2

Host 1 Host 2

(30)

Samza Architecture (Physical view)

Samza container 1 Samza container 2

Host 1 Host 2

Samza

YARN AM

Node manager Node manager

(31)

Samza Architecture (Physical view)

Samza container 1 Samza container 2

Host 1 Host 2

Samza

YARN AM

Node manager Node manager

Kafka Kafka

(32)

Map Reduce Map Reduce YARN AM

Node manager Node manager

HDFS HDFS

Host 1 Host 2

Samza Architecture: Equivalence to

Map Reduce

(33)

M/R Operation Primitives

¨  Filter records matching some condition

¨  Map record = f(record)

¨  Join Two/more datasets by key

¨  Group records with same key

¨  Aggregate f(records within the same group)

¨  Pipe job 1’s output => job 2’s input

(34)

M/R Operation Primitives on streams

¨  Filter records matching some condition

¨  Map record = f(record)

¨  Join Two/more datasets by key

¨  Group records with same key

¨  Aggregate f(records within the same group)

¨  Pipe job 1’s output => job 2’s input

Requires state

maintenance

(35)

Agenda

¨  Real-time Data Integration

¨  Introduction to Logs & Apache Kafka

¨  Logs & Stream processing

¨  Apache Samza

¨  Stateful stream processing

(36)

Example: Newsfeed

User 567 posted "Hello World"

Status update log

Fan out messages to

followers

Push notification log

567 -> [123, 679, 789, ...]

999 -> [156, 343, ... ] User 989 posted "Blah Blah"

User ... posted "..."

External connection DB

Refresh user 123's newsfeed Refresh user 679's newsfeed

(37)

Disk

100-500K msg/sec/node 100-500K msg/sec/node

1-5K queries/sec ??

ex: Cassandra, MongoDB, etc

Remote state

Samza task partition 0

Samza task partition 1

Local state vs Remote state: Remote

❌   Performance

❌   Isolation

❌   Limited APIs

(38)

Local

LevelDB/RocksDB

Samza task partition 0

Samza task partition 1

Local

LevelDB/RocksDB

Local state: Bring data closer to

computation

(39)

Local

LevelDB/RocksDB

Samza task partition 0

Samza task partition 1

Local

LevelDB/RocksDB

Local state: Bring data closer to

computation

Disk Change log stream

(40)

Example Revisited: Newsfeed

User 567 posted "Hello World"

Status update log New connection log

Fan out messages to

followers

Push notification log

567 -> [123, 679, 789, ...]

999 -> [156, 343, ... ] User 123 followed 567

User 890 followed 234 User ... followed ...

User 989 posted "Blah Blah"

User ... posted "..."

Refresh user 123's newsfeed Refresh user 679's newsfeed

(41)

Fault tolerance?

Samza container 1 Samza container 2

Host 1 Host 2

Samza

YARN AM

Node manager Node manager

Kafka Kafka

(42)

Local

LevelDB/RocksDB

Samza task partition 0

Samza task partition 1

Local

LevelDB/RocksDB Durable change log

Fault tolerance in Samza

(43)

Slow jobs

Log A Job 1

Job 2

Log B Log C

Log D Log E

❌   Drop data

❌   Backpressure

❌   Queue

❌   In memory

✅   On disk (KAFKA)

(44)

Summary

¨  Real time data integration is crucial for the success

and adoption of stream processing

¨  Logs form the basis for real time data integration

¨  Stream processing = f(logs)

¨  Samza is designed from ground-up for scalability

and provides fault-tolerant, persistent state

(45)

Thank you!

¨  The Log

¤  http://bit.ly/the_log

¨  Apache Kafka

¤  http://kafka.apache.org

¨  Apache Samza

¤  http://samza.incubator.apache.org

¨  Me

¤  @nehanarkhede

¤  http://www.linkedin.com/in/nehanarkhede

References

Related documents

Following successful completion of the course and assessment, a Royal Society of Biology certificate is awarded, which is used to support your Home Office Licence application..

There is no one route to getting a job with animals but an interest in science and a science based qualification teamed with work experience is a good place to start.. Some zoo

Many men and women (mostly men) came west: "In April of 1849, some 30,000 Americans started for the goldfields by land." This was in addition to the 25,000 who came by

After training volunteers help with feeding, cleaning, all round care for wildlife and now is the best time for training before we get busy. Volunteer trades people

The protocol was implemented over an 8-month pe- riod and included the following: (a) analysis of a set of parameters concerning the operating team’s behav- ior (Tab. I);

The National Cancer Institute (NCI) has prepared this booklet to help you learn about your diet needs during treat- ment and to help you cope with side effects that may affect

Item 2.4 was another quite important item ranked by internal stakeholders (management and support staff) and external (creditors), probably because government

This paper, by the Convener of the working party which recently produced insurers’ guidance on the protection of empty buildings * , suggests that where an existing commercial