SlideShare a Scribd company logo
Apache Samza
Past, Present and Future
Kartik Paramasivam
Director of Engineering, Streams Infra@ LinkedIn
Agenda
1. Stream Processing
2. State of the Union
3. Apache Samza : Key Differentiators
4. Apache Samza Futures
Stream Processing: Processing events as soon as they happen..
● Stateless Processing
■ Transformation etc.
■ Lookup adjunct data (lookup databases/call services )
■ Producing results for every event
● Stateful Processing
■ Triggering/Producing results periodically (time-windows)
● Maintain intermediate state
■ E.g. Joining across multiple streams of events.
● Common Issues
■ Scale !! Scale !! Scale !!
■ Reliability !!
■ Everything else (upgrades, debugging, diagnostics, security, ……)
Stream Processing: State of the Union
MillwheelStorm
Heron
Spark Streaming
S4
Dempsey
Samza
Flink
Beam
Dataflow
Azure Stream Analytics
AWS Kinesis AnalyticsGearPump
Kafka Streams
Orleans
Not meant to be an
accurate timeline..
Yes It is CROWDED !!
Apache Samza
● Top level Apache project since Dec 2014
● 5 big Releases (0.7, 0.8, 0.9, 0.10, 0.11)
● 62 Contributors
● 14 Committers
● Companies using : LinkedIn, Uber, MetaMarkets, Netflix,
Intuit, TripAdvisor, MobileAware, Optimizely ….
https://cwiki.apache.org/confluence/display/SAMZA/Powered+By
● Applications at LinkedIn : from ~20 to ~200 in 2 years.
Key Differentiators for Apache Samza
● Performance !!
● Stability
● Support for a variety of input sources
● Stream processing as a service AND as an embedded library
Performance : Accessing Adjunct Data
Performance : Maintaining Temporary State
Performance : Let us talk numbers !
● 100x Difference between using Local State vs Remote No-Sql store
● Local State details:
○ 1.1 Million TPS on a single processing machine (SSD)
○ Used a 3 node Kafka cluster for storing the durable changelog
● Remote State details:
○ 8500 TPS when the Samza job was changed to accessing a remote
No-Sql store
○ No-Sql Store was also on a 3 node (ssd) cluster
Remote State : Asynchronous Event Processing
Event Loop
(Single thread)
ProcessAsync
Remote
DB
/Services
Asynchronous I/O calls,
using Java Nio, Netty...
Responses sent to
main thread via
callback
Event loop is woken up to process next message
Task.max.concurrency >1 to
enable pipelining
Available with Samza 0.11
Remote State: Synchronous Processing on Multiple
Threads
Event Loop
(Single thread)
Schedule
Process()
Remote
DB/
Services
Built-In
Thread pool
Blocking I/O
calls
Event loop is
woken up by
the worker
thread
job.container.thread.pool.size = N
Available with Samza 0.11
Incremental Checkpointing : MVP for stateful apps
Input stream(e.g. Kafka)
Key Differentiators for Apache Samza
● Performance !!
● Stability
● Support for a variety of input sources
● Stream processing as a service AND as an embedded library
Speed Thrills .. but can kill
● Local State Considerations:
○ State should NOT be reseeded under normal operations (e.g.
Upgrades, Application restarts)
○ Minimal State should be reseeded
- If a container dies/removed
- If a container is added
How Samza keeps Local state ‘stable’ ?
Samza Job
Input
Stream
Change-log
Enable Continuous Scheduling
● Kafka or durable intermediate
queues are leveraged to
avoid backpressure issues in
a pipeline.
● Allows each stage to be
independent of the next stage
Backpressure in a Pipeline
Key Differentiators for Apache Samza
● Performance !!
● Stability
● Support for a variety of input sources
● Stream processing as a service AND as an embedded library
Pluggable system consumers
… Azure EventHub,
Azure Document DB,
Google Pub-Sub etc.
Batch processing in Samza!! (NEW)
● HDFS system consumer for Samza
● Same Samza processor can be used for processing
events from Kafka and HDFS with no code changes
● Scenarios :
○ Experimentation and Testing
○ Re-processing of large datasets
○ Some datasets are readily available on HDFS
(company specific)
Samza - HDFS support
HDFS input
HDFS
output
HDFS output
HDFS input
New
Available since
Samza 0.10
The batch job
auto-terminates
when the input is
fully processed.
Brooklin
Brooklin
set offset=0
Backup
Databus
Database
Backup
(HDFS)
Samza batch pipelines
HDFS
output
HDFS
input
HDFS
output
HDFS
input
Samza- HDFS Early Performance Results !!
Benchmark : Count number
of records grouped by <Field>
DataSize (bytes): 250 GB
Number of files : 487
Samza
Map/Reduce
Spark
Number of Containers
T
i
m
e
-s
e
c
o
n
d
s
Key Differentiators for Apache Samza
● Performance !!
● Stability
● Support for a variety of input sources (batch and streaming)
● Stream processing as a service AND (coming soon) as an
embedded library
Stream Processing as a Service
● Based on YARN
○ Yarn-RM high availability
○ Work preserving RM
○ Support for Heterogenous hardware with Node Labels (NEW)
● Easy upgrade of Samza framework :
Use the Samza version deployed on the machine instead of packaging it with the application.
● Disk Quotas for local state (e.g. rocksDB state)
● Samza Management Service(SAMZA-REST)-> Next Slide
YARN
Resource
Managers
Nodes
in the
YARN
cluster
RM SRR
RM SRR
RM SRR
NM SRN
Samza Management Service (Samza REST) (NEW)
NM SRN
NM SRN
NM SRN
NM SRN
NM SRN
NM SRN
NM SRN
/v1/jobs /v1/jobs /v1/jobs
Samza Containers
1. Exposes /jobs
resource to
start, stop, get
status of jobs
etc.
2. Cleans up
stores from
dead jobs
Samza
REST
YARN
processes(RM/NM)
Agenda
1. Stream processing
2. State of the union
3. Apache Samza : Key differentiators
4. Apache Samza Futures
Coming Soon : Samza as a Library
Stream Processor
Code
Job
Coordinator
Stream Processor
Code
Job
Coordinator
Stream Processor
Code
Job
Coordinator
...
Leader
● No YARN dependency
● Will use ZK for leader
election
● Embed stream processing
into your bigger application
StreamProcessor processor = new StreamProcessor (config, “job-name”,
“job-id”);
processor.start();
processor.awaitStart();
…
processor.stop();
Coming Soon: High Level API and Event Time
(SAMZA-914/915)
Count the number of PageViews by Region, every 30 minutes.
@Override public void init(Collection<SystemMessageStream> sources) {
sources.forEach(source -> {
Function<PageView, String> keyExtractor = view -> view.getRegion();
source.map(msg -> new PageViewMessage(msg))
.window(Windows.<PageViewMessage, String>intoSessionCounter(keyExtractor,
WindowType.Tumbling, 30*60
))
});
}
Coming Soon: First class support for Pipelines
(Samza- 1041)
public class MyPipeline implements PipelineFactory {
public Pipeline create(Config config) {
Processor myShuffler = getShuffle(config);
Processor myJoiner = getJoin(config);
Stream inStream = getStream(config, “inStream1”);
// … omitted for brevity
PipelineBuilder builder = new PipelineBuilder();
return builder.addInputStreams(myShuffler, inStream1)
.addOutputStreams(myShuffler, intermediateOutStream)
.addInputStreams(myJoiner, intermediateOutStream, inStream2)
.addOutputStreams(myJoiner, finalOutStream)
.build();
}
}
Shuffle
Join
input output
Future: Miscellaneous
● Exactly once processing
● Making it easier to auto-scale even with Local State
(on-demand Standby containers)
● Turnkey Disaster Recovery for stateful applications
○ Easy Restore of changelog and checkpoints from
some other datacenter.
● Improved support for Batch jobs
● SQL over Streams
● A default Dashboard :)
Questions ?

More Related Content

PPTX
Apache samza past, present and future
PDF
Apache samza
PPTX
Scylla Summit 2018: Scylla Feature Talks - Scylla Streaming and Repair Updates
PDF
ApacheCon BigData Europe 2015
PPTX
Samza at LinkedIn: Taking Stream Processing to the Next Level
PPTX
S3 cassandra or outer space? dumping time series data using spark
PPTX
Scylla Summit 2018: Worry-free ingestion - flow-control of writes in Scylla
PDF
Benchmarking Apache Samza: 1.2 million messages per sec per node
Apache samza past, present and future
Apache samza
Scylla Summit 2018: Scylla Feature Talks - Scylla Streaming and Repair Updates
ApacheCon BigData Europe 2015
Samza at LinkedIn: Taking Stream Processing to the Next Level
S3 cassandra or outer space? dumping time series data using spark
Scylla Summit 2018: Worry-free ingestion - flow-control of writes in Scylla
Benchmarking Apache Samza: 1.2 million messages per sec per node

What's hot (20)

PDF
Netflix Keystone - How Netflix Handles Data Streams up to 11M Events/Sec
PDF
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
ODP
Cassandra - Tips And Techniques
PDF
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
PPTX
Emr zeppelin & Livy demystified
PPTX
Scylla Summit 2018: Introducing ValuStor, A Memcached Alternative Made to Run...
PDF
Unbounded bounded-data-strangeloop-2016-monal-daxini
PDF
Apache Spark Streaming - www.know bigdata.com
PDF
HBaseCon2017 Quanta: Quora's hierarchical counting system on HBase
PDF
Netflix at-disney-09-26-2014
PPTX
Apache Samza: Reliable Stream Processing Atop Apache Kafka and Hadoop YARN
PDF
HBaseCon2017 Transactions in HBase
PDF
Stateful stream processing with kafka and samza
PPTX
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
PDF
Dive into Spark Streaming
PDF
Samza memory capacity_2015_ieee_big_data_data_quality_workshop
PDF
Real Time Data Streaming using Kafka & Storm
PPTX
Spark streaming
PDF
Spark Streaming into context
PDF
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
Netflix Keystone - How Netflix Handles Data Streams up to 11M Events/Sec
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Cassandra - Tips And Techniques
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Emr zeppelin & Livy demystified
Scylla Summit 2018: Introducing ValuStor, A Memcached Alternative Made to Run...
Unbounded bounded-data-strangeloop-2016-monal-daxini
Apache Spark Streaming - www.know bigdata.com
HBaseCon2017 Quanta: Quora's hierarchical counting system on HBase
Netflix at-disney-09-26-2014
Apache Samza: Reliable Stream Processing Atop Apache Kafka and Hadoop YARN
HBaseCon2017 Transactions in HBase
Stateful stream processing with kafka and samza
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
Dive into Spark Streaming
Samza memory capacity_2015_ieee_big_data_data_quality_workshop
Real Time Data Streaming using Kafka & Storm
Spark streaming
Spark Streaming into context
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
Ad

Similar to Apache Samza Past, Present and Future (20)

PDF
Samza portable runner for beam
PDF
Stream processing in python with Apache Samza and Beam
PDF
Netflix Open Source Meetup Season 4 Episode 2
PPTX
Beam me up, Samza!
PDF
What no one tells you about writing a streaming app
PDF
What No One Tells You About Writing a Streaming App: Spark Summit East talk b...
PDF
EVCache & Moneta (GoSF)
PDF
Netflix Keystone Pipeline at Samza Meetup 10-13-2015
PDF
SamzaSQL QCon'16 presentation
PPTX
Unified Batch & Stream Processing with Apache Samza
PDF
Introduction to Spark Streaming
PDF
Flink Forward SF 2017: Srikanth Satya & Tom Kaitchuck - Pravega: Storage Rei...
PDF
Netflix Keystone—Cloud scale event processing pipeline
PDF
Scalable Stream Processing with Apache Samza
PDF
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
PDF
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Be...
PDF
Cloud Lambda Architecture Patterns
PDF
Scala like distributed collections - dumping time-series data with apache spark
ODP
Stream processing using Kafka
PPTX
Migrating Data Pipeline from MongoDB to Cassandra
Samza portable runner for beam
Stream processing in python with Apache Samza and Beam
Netflix Open Source Meetup Season 4 Episode 2
Beam me up, Samza!
What no one tells you about writing a streaming app
What No One Tells You About Writing a Streaming App: Spark Summit East talk b...
EVCache & Moneta (GoSF)
Netflix Keystone Pipeline at Samza Meetup 10-13-2015
SamzaSQL QCon'16 presentation
Unified Batch & Stream Processing with Apache Samza
Introduction to Spark Streaming
Flink Forward SF 2017: Srikanth Satya & Tom Kaitchuck - Pravega: Storage Rei...
Netflix Keystone—Cloud scale event processing pipeline
Scalable Stream Processing with Apache Samza
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Be...
Cloud Lambda Architecture Patterns
Scala like distributed collections - dumping time-series data with apache spark
Stream processing using Kafka
Migrating Data Pipeline from MongoDB to Cassandra
Ad

Recently uploaded (20)

PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Mastering-Cybersecurity-The-Crucial-Role-of-Antivirus-Support-Services.pptx
PPTX
How a Careem Clone App Allows You to Compete with Large Mobility Brands
PPTX
Save Business Costs with CRM Software for Insurance Agents
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Best Practices for Rolling Out Competency Management Software.pdf
PDF
top salesforce developer skills in 2025.pdf
PDF
The Role of Automation and AI in EHS Management for Data Centers.pdf
PDF
How to Choose the Most Effective Social Media Agency in Bangalore.pdf
PPTX
Presentation of Computer CLASS 2 .pptx
PPTX
Introduction to Artificial Intelligence
PDF
Comprehensive Salesforce Implementation Services.pdf
PPTX
ai tools demonstartion for schools and inter college
PPTX
Online Work Permit System for Fast Permit Processing
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Build Multi-agent using Agent Development Kit
PDF
System and Network Administraation Chapter 3
PDF
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
PDF
Digital Strategies for Manufacturing Companies
How to Migrate SBCGlobal Email to Yahoo Easily
Mastering-Cybersecurity-The-Crucial-Role-of-Antivirus-Support-Services.pptx
How a Careem Clone App Allows You to Compete with Large Mobility Brands
Save Business Costs with CRM Software for Insurance Agents
Which alternative to Crystal Reports is best for small or large businesses.pdf
Best Practices for Rolling Out Competency Management Software.pdf
top salesforce developer skills in 2025.pdf
The Role of Automation and AI in EHS Management for Data Centers.pdf
How to Choose the Most Effective Social Media Agency in Bangalore.pdf
Presentation of Computer CLASS 2 .pptx
Introduction to Artificial Intelligence
Comprehensive Salesforce Implementation Services.pdf
ai tools demonstartion for schools and inter college
Online Work Permit System for Fast Permit Processing
How Creative Agencies Leverage Project Management Software.pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
Build Multi-agent using Agent Development Kit
System and Network Administraation Chapter 3
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
Digital Strategies for Manufacturing Companies

Apache Samza Past, Present and Future

  • 1. Apache Samza Past, Present and Future Kartik Paramasivam Director of Engineering, Streams Infra@ LinkedIn
  • 2. Agenda 1. Stream Processing 2. State of the Union 3. Apache Samza : Key Differentiators 4. Apache Samza Futures
  • 3. Stream Processing: Processing events as soon as they happen.. ● Stateless Processing ■ Transformation etc. ■ Lookup adjunct data (lookup databases/call services ) ■ Producing results for every event ● Stateful Processing ■ Triggering/Producing results periodically (time-windows) ● Maintain intermediate state ■ E.g. Joining across multiple streams of events. ● Common Issues ■ Scale !! Scale !! Scale !! ■ Reliability !! ■ Everything else (upgrades, debugging, diagnostics, security, ……)
  • 4. Stream Processing: State of the Union MillwheelStorm Heron Spark Streaming S4 Dempsey Samza Flink Beam Dataflow Azure Stream Analytics AWS Kinesis AnalyticsGearPump Kafka Streams Orleans Not meant to be an accurate timeline.. Yes It is CROWDED !!
  • 5. Apache Samza ● Top level Apache project since Dec 2014 ● 5 big Releases (0.7, 0.8, 0.9, 0.10, 0.11) ● 62 Contributors ● 14 Committers ● Companies using : LinkedIn, Uber, MetaMarkets, Netflix, Intuit, TripAdvisor, MobileAware, Optimizely …. https://cwiki.apache.org/confluence/display/SAMZA/Powered+By ● Applications at LinkedIn : from ~20 to ~200 in 2 years.
  • 6. Key Differentiators for Apache Samza ● Performance !! ● Stability ● Support for a variety of input sources ● Stream processing as a service AND as an embedded library
  • 7. Performance : Accessing Adjunct Data
  • 8. Performance : Maintaining Temporary State
  • 9. Performance : Let us talk numbers ! ● 100x Difference between using Local State vs Remote No-Sql store ● Local State details: ○ 1.1 Million TPS on a single processing machine (SSD) ○ Used a 3 node Kafka cluster for storing the durable changelog ● Remote State details: ○ 8500 TPS when the Samza job was changed to accessing a remote No-Sql store ○ No-Sql Store was also on a 3 node (ssd) cluster
  • 10. Remote State : Asynchronous Event Processing Event Loop (Single thread) ProcessAsync Remote DB /Services Asynchronous I/O calls, using Java Nio, Netty... Responses sent to main thread via callback Event loop is woken up to process next message Task.max.concurrency >1 to enable pipelining Available with Samza 0.11
  • 11. Remote State: Synchronous Processing on Multiple Threads Event Loop (Single thread) Schedule Process() Remote DB/ Services Built-In Thread pool Blocking I/O calls Event loop is woken up by the worker thread job.container.thread.pool.size = N Available with Samza 0.11
  • 12. Incremental Checkpointing : MVP for stateful apps Input stream(e.g. Kafka)
  • 13. Key Differentiators for Apache Samza ● Performance !! ● Stability ● Support for a variety of input sources ● Stream processing as a service AND as an embedded library
  • 14. Speed Thrills .. but can kill ● Local State Considerations: ○ State should NOT be reseeded under normal operations (e.g. Upgrades, Application restarts) ○ Minimal State should be reseeded - If a container dies/removed - If a container is added
  • 15. How Samza keeps Local state ‘stable’ ? Samza Job Input Stream Change-log Enable Continuous Scheduling
  • 16. ● Kafka or durable intermediate queues are leveraged to avoid backpressure issues in a pipeline. ● Allows each stage to be independent of the next stage Backpressure in a Pipeline
  • 17. Key Differentiators for Apache Samza ● Performance !! ● Stability ● Support for a variety of input sources ● Stream processing as a service AND as an embedded library
  • 18. Pluggable system consumers … Azure EventHub, Azure Document DB, Google Pub-Sub etc.
  • 19. Batch processing in Samza!! (NEW) ● HDFS system consumer for Samza ● Same Samza processor can be used for processing events from Kafka and HDFS with no code changes ● Scenarios : ○ Experimentation and Testing ○ Re-processing of large datasets ○ Some datasets are readily available on HDFS (company specific)
  • 20. Samza - HDFS support HDFS input HDFS output HDFS output HDFS input New Available since Samza 0.10 The batch job auto-terminates when the input is fully processed.
  • 24. Samza- HDFS Early Performance Results !! Benchmark : Count number of records grouped by <Field> DataSize (bytes): 250 GB Number of files : 487 Samza Map/Reduce Spark Number of Containers T i m e -s e c o n d s
  • 25. Key Differentiators for Apache Samza ● Performance !! ● Stability ● Support for a variety of input sources (batch and streaming) ● Stream processing as a service AND (coming soon) as an embedded library
  • 26. Stream Processing as a Service ● Based on YARN ○ Yarn-RM high availability ○ Work preserving RM ○ Support for Heterogenous hardware with Node Labels (NEW) ● Easy upgrade of Samza framework : Use the Samza version deployed on the machine instead of packaging it with the application. ● Disk Quotas for local state (e.g. rocksDB state) ● Samza Management Service(SAMZA-REST)-> Next Slide
  • 27. YARN Resource Managers Nodes in the YARN cluster RM SRR RM SRR RM SRR NM SRN Samza Management Service (Samza REST) (NEW) NM SRN NM SRN NM SRN NM SRN NM SRN NM SRN NM SRN /v1/jobs /v1/jobs /v1/jobs Samza Containers 1. Exposes /jobs resource to start, stop, get status of jobs etc. 2. Cleans up stores from dead jobs Samza REST YARN processes(RM/NM)
  • 28. Agenda 1. Stream processing 2. State of the union 3. Apache Samza : Key differentiators 4. Apache Samza Futures
  • 29. Coming Soon : Samza as a Library Stream Processor Code Job Coordinator Stream Processor Code Job Coordinator Stream Processor Code Job Coordinator ... Leader ● No YARN dependency ● Will use ZK for leader election ● Embed stream processing into your bigger application StreamProcessor processor = new StreamProcessor (config, “job-name”, “job-id”); processor.start(); processor.awaitStart(); … processor.stop();
  • 30. Coming Soon: High Level API and Event Time (SAMZA-914/915) Count the number of PageViews by Region, every 30 minutes. @Override public void init(Collection<SystemMessageStream> sources) { sources.forEach(source -> { Function<PageView, String> keyExtractor = view -> view.getRegion(); source.map(msg -> new PageViewMessage(msg)) .window(Windows.<PageViewMessage, String>intoSessionCounter(keyExtractor, WindowType.Tumbling, 30*60 )) }); }
  • 31. Coming Soon: First class support for Pipelines (Samza- 1041) public class MyPipeline implements PipelineFactory { public Pipeline create(Config config) { Processor myShuffler = getShuffle(config); Processor myJoiner = getJoin(config); Stream inStream = getStream(config, “inStream1”); // … omitted for brevity PipelineBuilder builder = new PipelineBuilder(); return builder.addInputStreams(myShuffler, inStream1) .addOutputStreams(myShuffler, intermediateOutStream) .addInputStreams(myJoiner, intermediateOutStream, inStream2) .addOutputStreams(myJoiner, finalOutStream) .build(); } } Shuffle Join input output
  • 32. Future: Miscellaneous ● Exactly once processing ● Making it easier to auto-scale even with Local State (on-demand Standby containers) ● Turnkey Disaster Recovery for stateful applications ○ Easy Restore of changelog and checkpoints from some other datacenter. ● Improved support for Batch jobs ● SQL over Streams ● A default Dashboard :)