SlideShare uma empresa Scribd logo
1 de 34
NICO KRUBER
SOLUTION ARCHITECT / SOFTWARE ENGINEER @ DATA ARTISANS,
APACHE FLINK COMMITTER
IMPROVING THROUGHPUT AND LATENCY
WITH FLINK’S NETWORK STACK
© 2018 data Artisans2
FLINK DATA TRANSPORT (LOGICAL)
• Subtask output
‒ pipelined-bounded
‒ pipelined-unbounded
‒ Blocking
• Scheduling type
‒ all at once
‒ next stage on complete output
‒ next stage on first output
• Transport
‒ high throughput via buffers
‒ low latency via buffer timeout
Subtask 1
Subtask 2
Subtask 3
Subtask 4
Stream Partition
Abstraction over:
© 2018 data Artisans3
TaskManager 1 TaskManager 2
Subtask 4
1
2
Buffer Pool
Subtask 2
3
4
Buffer Pool
Subtask 3
1
2
Buffer Pool
Empty
Buffer
Subtask 1
3
4
Buffer Pool
Buffer with
Data in Queue
FLINK DATA TRANSPORT (PHYSICAL)
TCP Connection
© 2018 data Artisans4
TaskManager 1 TaskManager 2
Subtask 2
3
4
Buffer Pool
Subtask 1
3
4
Buffer Pool
Buffer with
Data in Queue
Subtask 4
1
2
Buffer Pool
Subtask 3
1
2
Buffer Pool
Empty
Buffer
FLINK DATA TRANSPORT (PHYSICAL)
TCP Connection
Backpressure
© 2018 data Artisans5
TaskManager 1 TaskManager 2
Subtask 2
3
4
Buffer Pool
Subtask 1
3
4
Buffer Pool
Subtask 4
1
2
Buffer Pool
Subtask 3
1
2
Buffer Pool
FLINK DATA TRANSPORT (PHYSICAL)
TCP Connection
Backpressure
Zoom in
© 2018 data Artisans6
CREDIT-BASED FLOW CONTROL
© 2018 data Artisans7
Subtask 4
TaskManager 1 TaskManager 2
Subtask 2
2
Buffer Pool
CREDIT-BASED FLOW CONTROL (FLINK 1.5+)
TCP Connection
1
Floating
Buffers
Exclusive
Buffers
Backlog
© 2018 data Artisans8
Subtask 4
TaskManager 1 TaskManager 2
Subtask 2
2
Buffer Pool
CREDIT-BASED FLOW CONTROL (FLINK 1.5+)
TCP Connection
Floating
Buffers
0
Unannounced
Credit
2
Channel
Credit
announce credit
Send buffers &
announce backlog size
4 Backlog size
Ask for
floating
buffers
321
© 2018 data Artisans9
CREDIT-BASED FLOW CONTROL (FLINK 1.5+)
• Never blocks the TCP connection
➢ Better resource utilization with data
skew in multiplexed connections
• Avoids overloading of slow receivers
(direct control over amount of buffered
data)
➢ Improves checkpoint alignment
• cost: additional announce messages
(piggy-bagged),
potential round-trip latency
Checkpoint Duration
Without Flow Control
With Flow Control
© 2018 data Artisans10
LOW LATENCY IMPROVEMENTS
© 2018 data Artisans11
TaskManager 1 TaskManager 2
Subtask 4
1
2
Subtask 2
Buffer Pool
Subtask 3
1
2
Subtask 1
3
4
NETWORK STACK (EXTENDED)
TCP Connection
NettyServer
Buffer Pool Buffer Pool
Buffer Pool
NettyClient
RecordWriter
3
4
RecordWriter
RecordReader
RecordReader
Zoom in
© 2018 data Artisans12
FROM RECORD TO NETWORK
Subtask 1
NettyServer
Buffer
Pool
StreamRecordWriter
Write data &
update writer index
notify
new data
take data &
remove buffer
get new
buffer
© 2018 data Artisans13
FROM RECORD TO NETWORK
Subtask 1
NettyServer
Buffer
Pool
StreamRecordWriter
Output
Flusher
flush
notify
new data
Write data &
update writer index
take data &
update reader index
© 2018 data Artisans14
BufferConsumer
BufferBuilder
BUFFER BUILDER & CONSUMER
• Producer-Consumer structure with lightweight synchronization
MemorySegment
volatile int
writePosition
int readPosition
• append()
• commit()
• finish() • build() →
Buffer.readOnly
Slice()
Buffer
(wrapping MemorySegment)
© 2018 data Artisans15
LATENCY VS. THROUGHPUT
▪ low latency via buffer timeout
*100 nodes x 8 slots
▪ high throughput through buffers
© 2018 data Artisans16
CONNECTION TYPES
© 2018 data Artisans17
LOCAL VS. REMOTE CONNECTIONS
• Every (unchained) connection:
‒ Requires serialization
‒ Assembles serialized records into buffers
‒ Forwards a buffer when it is full or the buffer timeout hit
• Remote connection:
‒ Sent via multiplexed Netty TCP connections (one per pair of tasks and task managers)
‒ As soon as a buffer is on the wire, it can be re-used
➢ Allows credit-based flow control to control amount of buffered data
• Local connection:
‒ Direct connection between sender and receiver: buffers are shared
➢ No need for further flow control (buffered data = sender buffers)
© 2018 data Artisans18
TUNING OPTIONS
© 2018 data Artisans19
CREDIT-BASED FLOW CONTROL
• taskmanager.network.credit-model: true/false
• taskmanager.network.memory.buffers-per-channel: 2
• taskmanager.network.memory.floating-buffers-per-gate: 8
• Number of exclusive buffers should be enough to saturate the network for a full
round-trip-time (2 x network latency)
➢ #exclBuffers * segmentSize = round-trip-time * throughput
Subtask 4
TaskManager 1 TaskManager 2
Subtask 2
2
0
Unannounced
Credit2
Channel
Credit
announce credit
Send buffers &
announce backlog size
0
Backlog size
© 2018 data Artisans20
CREDIT-BASED FLOW CONTROL
• Number of exclusive buffers too high
➢ higher number of required network buffers
➢ buffering more during checkpoint alignment
➢ BUT: faster ramp-up (before floating buffers kick in)
• Number of exclusive buffers too low
➢ times of in-activity during ramp-up
Subtask 4
TaskManager 1 TaskManager 2
Subtask 2
2
0
Unannounced
Credit2
Channel
Credit
announce credit
Send buffers &
announce backlog size
0
Backlog size
© 2018 data Artisans21
BUFFER TIMEOUT
• StreamExecutionEnvironment#setBufferTimeout()
• Affects every unchained connection: remote or local
➢ Upper bound on latency for low throughput channels(!)
➢ Trade-off throughput vs. latency (see earlier)
© 2018 data Artisans22
NETWORK THREADS
• netty.client.numThreads (default: number of slots)
• netty.server.numThreads (default: number of slots)
• May become a bottleneck if thread(s) are overloaded
• BUT: may also become an overhead if too many
➢ Do your own benchmarks and verify for your job!
© 2018 data Artisans23
USE LINUX-NATIVE EPOLL (FLINK 1.6+)
• taskmanager.network.netty.transport: AUTO | NIO | EPOLL
• EPOLL may reduce the channel polling overhead between user space and
kernel/system space
• There should be no downside in activating this or at least AUTO.
➢ Do your own benchmarks for your job!
• Please give feedback in FLINK-10177 so that we can decide whether to use
AUTO by default.
© 2018 data Artisans24
METRICS
© 2018 data Artisans25
NETWORK STACK METRICS
• Backpressure monitor
‒ Web/REST UI, /jobs/:jobid/vertices/:vertexid/backpressure)
• [input, output]QueueLength
• numRecords[In, Out]
• numBytesOut, numBytesIn[Local, Remote]
• numBuffersOut, numBuffersIn[Local, Remote] (Flink 1.5.3+, 1.6.1+)
© 2018 data Artisans26
LATENCY MARKERS
• ExecutionConfig#setLatencyTrackingInterval() (default: every 2s)
• Sources periodically emit a LatencyMarker with a timestamp
• These flow with the stream and properly queue behind records
• Latency markers bypass operators, e.g. windows
• Once received, they will be re-emitted onto a random output channel
• We create one histogram per source ↔ operator pair (window size: 128)
• source_id.<sourceId>.source_subtask_index.<subtaskIdx>.
operator_id.<operatorId>.operator_subtask_index.<subtaskIdx>
➢ 10 operators, parallelism 100 = 9 * 100 * 100 = 90,000 histograms!
https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html#latency-tracking
© 2018 data Artisans27
COMMON ANTIPATTERNS
© 2018 data Artisans28
REPEATED KEYBY’S ON THE SAME KEY
• KeyedStream is not retained
‒ UDF could have changed the key
• Additional keyBy() is necessary to gain access to keyed state, but:
‒ Prevents chaining
‒ Adds an additional shuffle
➢ DataStreamUtils#reinterpretAsKeyedStream
.keyBy(“location”)
.keyBy(“location”)
© 2018 data Artisans29
Subtask 4
TaskManager 1 TaskManager 2
Subtask 2
Buffer Pool
CREDIT-BASED FLOW CONTROL (FLINK 1.5+)
TCP Connection
Floating
Buffers
Exclusive
Buffers
Buffers: #channels * 2 + 8
LatencyMarker
➢ synchronization overhead
for the output flusher!
© 2018 data Artisans30
WHAT‘S UP NEXT?
© 2018 data Artisans31
NETWORK SERIALIZATION STACK (FLINK 1.7?)
• Serialization for broadcasts once per record, not channel
• Only one intermediate serialization buffer (on heap)
➢ significantly reduces the memory footprint
• see FLINK-9913
TaskManager 1
Subtask 2
RecordWriter
© 2018 data Artisans32
OPENSSL-BASED SSL ENGINE (FLINK 1.7?)
• Runs native code
• Uses advanced CPU instruction sets
➢ May reduce encryption/decryption overhead (needs verification)
• see FLINK-9816
© 2018 data Artisans33
MOVE OUTPUT FLUSHER TO NETTY
• Current implementation may have (GC) problems with many channels
➢ schedule the output flusher inside the Netty event loop
• see FLINK-8625
THANK YOU!
@dataArtisans
@ApacheFlink
WE ARE HIRING
data-artisans.com/careers

Mais conteúdo relacionado

Mais procurados

SQL Performance Improvements at a Glance in Apache Spark 3.0
SQL Performance Improvements at a Glance in Apache Spark 3.0SQL Performance Improvements at a Glance in Apache Spark 3.0
SQL Performance Improvements at a Glance in Apache Spark 3.0Databricks
 
[Apache Kafka® Meetup by Confluent] Graph-based stream processing
[Apache Kafka® Meetup by Confluent] Graph-based stream processing[Apache Kafka® Meetup by Confluent] Graph-based stream processing
[Apache Kafka® Meetup by Confluent] Graph-based stream processingconfluent
 
Continuous Application with FAIR Scheduler with Robert Xue
Continuous Application with FAIR Scheduler with Robert XueContinuous Application with FAIR Scheduler with Robert Xue
Continuous Application with FAIR Scheduler with Robert XueDatabricks
 
Data Distribution and Ordering for Efficient Data Source V2
Data Distribution and Ordering for Efficient Data Source V2Data Distribution and Ordering for Efficient Data Source V2
Data Distribution and Ordering for Efficient Data Source V2Databricks
 
InfluxDB IOx Tech Talks: The Impossible Dream: Easy-to-Use, Super Fast Softw...
InfluxDB IOx Tech Talks: The Impossible Dream:  Easy-to-Use, Super Fast Softw...InfluxDB IOx Tech Talks: The Impossible Dream:  Easy-to-Use, Super Fast Softw...
InfluxDB IOx Tech Talks: The Impossible Dream: Easy-to-Use, Super Fast Softw...InfluxData
 
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
A Rusty introduction to Apache Arrow and how it applies to a  time series dat...A Rusty introduction to Apache Arrow and how it applies to a  time series dat...
A Rusty introduction to Apache Arrow and how it applies to a time series dat...Andrew Lamb
 
Snaplogic Live: Big Data in Motion
Snaplogic Live: Big Data in MotionSnaplogic Live: Big Data in Motion
Snaplogic Live: Big Data in MotionSnapLogic
 
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -Yasuyuki Sugai
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Flink Forward
 
Using Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitUsing Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitFlink Forward
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Takahiro Harada
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)NTT DATA Technology & Innovation
 
Performance comparison: Multi-Model vs. MongoDB and Neo4j
Performance comparison: Multi-Model vs. MongoDB and Neo4jPerformance comparison: Multi-Model vs. MongoDB and Neo4j
Performance comparison: Multi-Model vs. MongoDB and Neo4jArangoDB Database
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkFlink Forward
 
Bose Model 100 Speakers - Owner's Guide
Bose Model 100 Speakers - Owner's GuideBose Model 100 Speakers - Owner's Guide
Bose Model 100 Speakers - Owner's GuideFelice Bonetto
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421Linaro
 
SDN in the Management Plane: OpenConfig and Streaming Telemetry
SDN in the Management Plane: OpenConfig and Streaming TelemetrySDN in the Management Plane: OpenConfig and Streaming Telemetry
SDN in the Management Plane: OpenConfig and Streaming TelemetryAnees Shaikh
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Containerized Stream Engine to Build Modern Delta Lake
Containerized Stream Engine to Build Modern Delta LakeContainerized Stream Engine to Build Modern Delta Lake
Containerized Stream Engine to Build Modern Delta LakeDatabricks
 

Mais procurados (20)

SQL Performance Improvements at a Glance in Apache Spark 3.0
SQL Performance Improvements at a Glance in Apache Spark 3.0SQL Performance Improvements at a Glance in Apache Spark 3.0
SQL Performance Improvements at a Glance in Apache Spark 3.0
 
[Apache Kafka® Meetup by Confluent] Graph-based stream processing
[Apache Kafka® Meetup by Confluent] Graph-based stream processing[Apache Kafka® Meetup by Confluent] Graph-based stream processing
[Apache Kafka® Meetup by Confluent] Graph-based stream processing
 
Continuous Application with FAIR Scheduler with Robert Xue
Continuous Application with FAIR Scheduler with Robert XueContinuous Application with FAIR Scheduler with Robert Xue
Continuous Application with FAIR Scheduler with Robert Xue
 
Data Distribution and Ordering for Efficient Data Source V2
Data Distribution and Ordering for Efficient Data Source V2Data Distribution and Ordering for Efficient Data Source V2
Data Distribution and Ordering for Efficient Data Source V2
 
InfluxDB IOx Tech Talks: The Impossible Dream: Easy-to-Use, Super Fast Softw...
InfluxDB IOx Tech Talks: The Impossible Dream:  Easy-to-Use, Super Fast Softw...InfluxDB IOx Tech Talks: The Impossible Dream:  Easy-to-Use, Super Fast Softw...
InfluxDB IOx Tech Talks: The Impossible Dream: Easy-to-Use, Super Fast Softw...
 
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
A Rusty introduction to Apache Arrow and how it applies to a  time series dat...A Rusty introduction to Apache Arrow and how it applies to a  time series dat...
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
 
Snaplogic Live: Big Data in Motion
Snaplogic Live: Big Data in MotionSnaplogic Live: Big Data in Motion
Snaplogic Live: Big Data in Motion
 
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
 
Real time data quality on Flink
Real time data quality on FlinkReal time data quality on Flink
Real time data quality on Flink
 
Using Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitUsing Queryable State for Fun and Profit
Using Queryable State for Fun and Profit
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
 
Performance comparison: Multi-Model vs. MongoDB and Neo4j
Performance comparison: Multi-Model vs. MongoDB and Neo4jPerformance comparison: Multi-Model vs. MongoDB and Neo4j
Performance comparison: Multi-Model vs. MongoDB and Neo4j
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in Flink
 
Bose Model 100 Speakers - Owner's Guide
Bose Model 100 Speakers - Owner's GuideBose Model 100 Speakers - Owner's Guide
Bose Model 100 Speakers - Owner's Guide
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421
 
SDN in the Management Plane: OpenConfig and Streaming Telemetry
SDN in the Management Plane: OpenConfig and Streaming TelemetrySDN in the Management Plane: OpenConfig and Streaming Telemetry
SDN in the Management Plane: OpenConfig and Streaming Telemetry
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Containerized Stream Engine to Build Modern Delta Lake
Containerized Stream Engine to Build Modern Delta LakeContainerized Stream Engine to Build Modern Delta Lake
Containerized Stream Engine to Build Modern Delta Lake
 

Semelhante a Flink Forward Berlin 2018: Nico Kruber - "Improving throughput and latency with Flink's network stack"

Ingestion and Dimensions Compute and Enrich using Apache Apex
Ingestion and Dimensions Compute and Enrich using Apache ApexIngestion and Dimensions Compute and Enrich using Apache Apex
Ingestion and Dimensions Compute and Enrich using Apache ApexApache Apex
 
Intro to Apache Apex - Next Gen Platform for Ingest and Transform
Intro to Apache Apex - Next Gen Platform for Ingest and TransformIntro to Apache Apex - Next Gen Platform for Ingest and Transform
Intro to Apache Apex - Next Gen Platform for Ingest and TransformApache Apex
 
Intro to Apache Apex (next gen Hadoop) & comparison to Spark Streaming
Intro to Apache Apex (next gen Hadoop) & comparison to Spark StreamingIntro to Apache Apex (next gen Hadoop) & comparison to Spark Streaming
Intro to Apache Apex (next gen Hadoop) & comparison to Spark StreamingApache Apex
 
Architectual Comparison of Apache Apex and Spark Streaming
Architectual Comparison of Apache Apex and Spark StreamingArchitectual Comparison of Apache Apex and Spark Streaming
Architectual Comparison of Apache Apex and Spark StreamingApache Apex
 
Apache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache ApexApache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache ApexApache Apex
 
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...DataWorks Summit/Hadoop Summit
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and ApplicationsApache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and ApplicationsThomas Weise
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Comsysto Reply GmbH
 
Realtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQRealtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQXin Wang
 
Flexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache FlinkFlexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache FlinkDataWorks Summit
 
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache ApexHadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache ApexApache Apex
 
BigDataSpain 2016: Introduction to Apache Apex
BigDataSpain 2016: Introduction to Apache ApexBigDataSpain 2016: Introduction to Apache Apex
BigDataSpain 2016: Introduction to Apache ApexThomas Weise
 
Multi-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation StrategiesMulti-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation StrategiesLogan Best
 
Journey into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka StreamsJourney into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka StreamsKevin Webber
 
MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)
MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)
MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)Art Schanz
 
Hungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingHungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingMarton Kiss
 
(NET404) Making Every Packet Count
(NET404) Making Every Packet Count(NET404) Making Every Packet Count
(NET404) Making Every Packet CountAmazon Web Services
 
Data Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkFabian Hueske
 
Multi-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation StrategiesMulti-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation StrategiesSagi Brody
 

Semelhante a Flink Forward Berlin 2018: Nico Kruber - "Improving throughput and latency with Flink's network stack" (20)

Ingestion and Dimensions Compute and Enrich using Apache Apex
Ingestion and Dimensions Compute and Enrich using Apache ApexIngestion and Dimensions Compute and Enrich using Apache Apex
Ingestion and Dimensions Compute and Enrich using Apache Apex
 
Intro to Apache Apex - Next Gen Platform for Ingest and Transform
Intro to Apache Apex - Next Gen Platform for Ingest and TransformIntro to Apache Apex - Next Gen Platform for Ingest and Transform
Intro to Apache Apex - Next Gen Platform for Ingest and Transform
 
Intro to Apache Apex (next gen Hadoop) & comparison to Spark Streaming
Intro to Apache Apex (next gen Hadoop) & comparison to Spark StreamingIntro to Apache Apex (next gen Hadoop) & comparison to Spark Streaming
Intro to Apache Apex (next gen Hadoop) & comparison to Spark Streaming
 
Architectual Comparison of Apache Apex and Spark Streaming
Architectual Comparison of Apache Apex and Spark StreamingArchitectual Comparison of Apache Apex and Spark Streaming
Architectual Comparison of Apache Apex and Spark Streaming
 
Apache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache ApexApache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
 
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and ApplicationsApache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications
 
Realtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQRealtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQ
 
Flexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache FlinkFlexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache Flink
 
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache ApexHadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
 
BigDataSpain 2016: Introduction to Apache Apex
BigDataSpain 2016: Introduction to Apache ApexBigDataSpain 2016: Introduction to Apache Apex
BigDataSpain 2016: Introduction to Apache Apex
 
Multi-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation StrategiesMulti-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation Strategies
 
Journey into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka StreamsJourney into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka Streams
 
MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)
MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)
MQTC V2.0.1.3 - WMQ & TCP Buffers – Size DOES Matter! (pps)
 
Hungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programmingHungary Usergroup - Midonet overlay programming
Hungary Usergroup - Midonet overlay programming
 
(NET404) Making Every Packet Count
(NET404) Making Every Packet Count(NET404) Making Every Packet Count
(NET404) Making Every Packet Count
 
Next Gen Big Data Analytics with Apache Apex
Next Gen Big Data Analytics with Apache Apex Next Gen Big Data Analytics with Apache Apex
Next Gen Big Data Analytics with Apache Apex
 
Data Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache Flink
 
Multi-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation StrategiesMulti-Layer DDoS Mitigation Strategies
Multi-Layer DDoS Mitigation Strategies
 

Mais de Flink Forward

Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Flink Forward
 
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...Flink Forward
 
Introducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorIntroducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorFlink Forward
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeFlink Forward
 
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Flink Forward
 
One sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkOne sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkFlink Forward
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxFlink Forward
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink Forward
 
Apache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraApache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraFlink Forward
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentFlink Forward
 
The Current State of Table API in 2022
The Current State of Table API in 2022The Current State of Table API in 2022
The Current State of Table API in 2022Flink Forward
 
Flink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink Forward
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsFlink Forward
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotFlink Forward
 
Processing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesProcessing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesFlink Forward
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Flink Forward
 
Batch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergBatch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergFlink Forward
 
Welcome to the Flink Community!
Welcome to the Flink Community!Welcome to the Flink Community!
Welcome to the Flink Community!Flink Forward
 
Practical learnings from running thousands of Flink jobs
Practical learnings from running thousands of Flink jobsPractical learnings from running thousands of Flink jobs
Practical learnings from running thousands of Flink jobsFlink Forward
 
Extending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use casesExtending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use casesFlink Forward
 

Mais de Flink Forward (20)

Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...
 
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
 
Introducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorIntroducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes Operator
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive Mode
 
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
 
One sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkOne sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async Sink
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at Pinterest
 
Apache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraApache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native Era
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production Deployment
 
The Current State of Table API in 2022
The Current State of Table API in 2022The Current State of Table API in 2022
The Current State of Table API in 2022
 
Flink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink SQL on Pulsar made easy
Flink SQL on Pulsar made easy
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data Alerts
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
 
Processing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesProcessing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial Services
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...
 
Batch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergBatch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & Iceberg
 
Welcome to the Flink Community!
Welcome to the Flink Community!Welcome to the Flink Community!
Welcome to the Flink Community!
 
Practical learnings from running thousands of Flink jobs
Practical learnings from running thousands of Flink jobsPractical learnings from running thousands of Flink jobs
Practical learnings from running thousands of Flink jobs
 
Extending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use casesExtending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use cases
 

Último

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Flink Forward Berlin 2018: Nico Kruber - "Improving throughput and latency with Flink's network stack"

  • 1. NICO KRUBER SOLUTION ARCHITECT / SOFTWARE ENGINEER @ DATA ARTISANS, APACHE FLINK COMMITTER IMPROVING THROUGHPUT AND LATENCY WITH FLINK’S NETWORK STACK
  • 2. © 2018 data Artisans2 FLINK DATA TRANSPORT (LOGICAL) • Subtask output ‒ pipelined-bounded ‒ pipelined-unbounded ‒ Blocking • Scheduling type ‒ all at once ‒ next stage on complete output ‒ next stage on first output • Transport ‒ high throughput via buffers ‒ low latency via buffer timeout Subtask 1 Subtask 2 Subtask 3 Subtask 4 Stream Partition Abstraction over:
  • 3. © 2018 data Artisans3 TaskManager 1 TaskManager 2 Subtask 4 1 2 Buffer Pool Subtask 2 3 4 Buffer Pool Subtask 3 1 2 Buffer Pool Empty Buffer Subtask 1 3 4 Buffer Pool Buffer with Data in Queue FLINK DATA TRANSPORT (PHYSICAL) TCP Connection
  • 4. © 2018 data Artisans4 TaskManager 1 TaskManager 2 Subtask 2 3 4 Buffer Pool Subtask 1 3 4 Buffer Pool Buffer with Data in Queue Subtask 4 1 2 Buffer Pool Subtask 3 1 2 Buffer Pool Empty Buffer FLINK DATA TRANSPORT (PHYSICAL) TCP Connection Backpressure
  • 5. © 2018 data Artisans5 TaskManager 1 TaskManager 2 Subtask 2 3 4 Buffer Pool Subtask 1 3 4 Buffer Pool Subtask 4 1 2 Buffer Pool Subtask 3 1 2 Buffer Pool FLINK DATA TRANSPORT (PHYSICAL) TCP Connection Backpressure Zoom in
  • 6. © 2018 data Artisans6 CREDIT-BASED FLOW CONTROL
  • 7. © 2018 data Artisans7 Subtask 4 TaskManager 1 TaskManager 2 Subtask 2 2 Buffer Pool CREDIT-BASED FLOW CONTROL (FLINK 1.5+) TCP Connection 1 Floating Buffers Exclusive Buffers Backlog
  • 8. © 2018 data Artisans8 Subtask 4 TaskManager 1 TaskManager 2 Subtask 2 2 Buffer Pool CREDIT-BASED FLOW CONTROL (FLINK 1.5+) TCP Connection Floating Buffers 0 Unannounced Credit 2 Channel Credit announce credit Send buffers & announce backlog size 4 Backlog size Ask for floating buffers 321
  • 9. © 2018 data Artisans9 CREDIT-BASED FLOW CONTROL (FLINK 1.5+) • Never blocks the TCP connection ➢ Better resource utilization with data skew in multiplexed connections • Avoids overloading of slow receivers (direct control over amount of buffered data) ➢ Improves checkpoint alignment • cost: additional announce messages (piggy-bagged), potential round-trip latency Checkpoint Duration Without Flow Control With Flow Control
  • 10. © 2018 data Artisans10 LOW LATENCY IMPROVEMENTS
  • 11. © 2018 data Artisans11 TaskManager 1 TaskManager 2 Subtask 4 1 2 Subtask 2 Buffer Pool Subtask 3 1 2 Subtask 1 3 4 NETWORK STACK (EXTENDED) TCP Connection NettyServer Buffer Pool Buffer Pool Buffer Pool NettyClient RecordWriter 3 4 RecordWriter RecordReader RecordReader Zoom in
  • 12. © 2018 data Artisans12 FROM RECORD TO NETWORK Subtask 1 NettyServer Buffer Pool StreamRecordWriter Write data & update writer index notify new data take data & remove buffer get new buffer
  • 13. © 2018 data Artisans13 FROM RECORD TO NETWORK Subtask 1 NettyServer Buffer Pool StreamRecordWriter Output Flusher flush notify new data Write data & update writer index take data & update reader index
  • 14. © 2018 data Artisans14 BufferConsumer BufferBuilder BUFFER BUILDER & CONSUMER • Producer-Consumer structure with lightweight synchronization MemorySegment volatile int writePosition int readPosition • append() • commit() • finish() • build() → Buffer.readOnly Slice() Buffer (wrapping MemorySegment)
  • 15. © 2018 data Artisans15 LATENCY VS. THROUGHPUT ▪ low latency via buffer timeout *100 nodes x 8 slots ▪ high throughput through buffers
  • 16. © 2018 data Artisans16 CONNECTION TYPES
  • 17. © 2018 data Artisans17 LOCAL VS. REMOTE CONNECTIONS • Every (unchained) connection: ‒ Requires serialization ‒ Assembles serialized records into buffers ‒ Forwards a buffer when it is full or the buffer timeout hit • Remote connection: ‒ Sent via multiplexed Netty TCP connections (one per pair of tasks and task managers) ‒ As soon as a buffer is on the wire, it can be re-used ➢ Allows credit-based flow control to control amount of buffered data • Local connection: ‒ Direct connection between sender and receiver: buffers are shared ➢ No need for further flow control (buffered data = sender buffers)
  • 18. © 2018 data Artisans18 TUNING OPTIONS
  • 19. © 2018 data Artisans19 CREDIT-BASED FLOW CONTROL • taskmanager.network.credit-model: true/false • taskmanager.network.memory.buffers-per-channel: 2 • taskmanager.network.memory.floating-buffers-per-gate: 8 • Number of exclusive buffers should be enough to saturate the network for a full round-trip-time (2 x network latency) ➢ #exclBuffers * segmentSize = round-trip-time * throughput Subtask 4 TaskManager 1 TaskManager 2 Subtask 2 2 0 Unannounced Credit2 Channel Credit announce credit Send buffers & announce backlog size 0 Backlog size
  • 20. © 2018 data Artisans20 CREDIT-BASED FLOW CONTROL • Number of exclusive buffers too high ➢ higher number of required network buffers ➢ buffering more during checkpoint alignment ➢ BUT: faster ramp-up (before floating buffers kick in) • Number of exclusive buffers too low ➢ times of in-activity during ramp-up Subtask 4 TaskManager 1 TaskManager 2 Subtask 2 2 0 Unannounced Credit2 Channel Credit announce credit Send buffers & announce backlog size 0 Backlog size
  • 21. © 2018 data Artisans21 BUFFER TIMEOUT • StreamExecutionEnvironment#setBufferTimeout() • Affects every unchained connection: remote or local ➢ Upper bound on latency for low throughput channels(!) ➢ Trade-off throughput vs. latency (see earlier)
  • 22. © 2018 data Artisans22 NETWORK THREADS • netty.client.numThreads (default: number of slots) • netty.server.numThreads (default: number of slots) • May become a bottleneck if thread(s) are overloaded • BUT: may also become an overhead if too many ➢ Do your own benchmarks and verify for your job!
  • 23. © 2018 data Artisans23 USE LINUX-NATIVE EPOLL (FLINK 1.6+) • taskmanager.network.netty.transport: AUTO | NIO | EPOLL • EPOLL may reduce the channel polling overhead between user space and kernel/system space • There should be no downside in activating this or at least AUTO. ➢ Do your own benchmarks for your job! • Please give feedback in FLINK-10177 so that we can decide whether to use AUTO by default.
  • 24. © 2018 data Artisans24 METRICS
  • 25. © 2018 data Artisans25 NETWORK STACK METRICS • Backpressure monitor ‒ Web/REST UI, /jobs/:jobid/vertices/:vertexid/backpressure) • [input, output]QueueLength • numRecords[In, Out] • numBytesOut, numBytesIn[Local, Remote] • numBuffersOut, numBuffersIn[Local, Remote] (Flink 1.5.3+, 1.6.1+)
  • 26. © 2018 data Artisans26 LATENCY MARKERS • ExecutionConfig#setLatencyTrackingInterval() (default: every 2s) • Sources periodically emit a LatencyMarker with a timestamp • These flow with the stream and properly queue behind records • Latency markers bypass operators, e.g. windows • Once received, they will be re-emitted onto a random output channel • We create one histogram per source ↔ operator pair (window size: 128) • source_id.<sourceId>.source_subtask_index.<subtaskIdx>. operator_id.<operatorId>.operator_subtask_index.<subtaskIdx> ➢ 10 operators, parallelism 100 = 9 * 100 * 100 = 90,000 histograms! https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html#latency-tracking
  • 27. © 2018 data Artisans27 COMMON ANTIPATTERNS
  • 28. © 2018 data Artisans28 REPEATED KEYBY’S ON THE SAME KEY • KeyedStream is not retained ‒ UDF could have changed the key • Additional keyBy() is necessary to gain access to keyed state, but: ‒ Prevents chaining ‒ Adds an additional shuffle ➢ DataStreamUtils#reinterpretAsKeyedStream .keyBy(“location”) .keyBy(“location”)
  • 29. © 2018 data Artisans29 Subtask 4 TaskManager 1 TaskManager 2 Subtask 2 Buffer Pool CREDIT-BASED FLOW CONTROL (FLINK 1.5+) TCP Connection Floating Buffers Exclusive Buffers Buffers: #channels * 2 + 8 LatencyMarker ➢ synchronization overhead for the output flusher!
  • 30. © 2018 data Artisans30 WHAT‘S UP NEXT?
  • 31. © 2018 data Artisans31 NETWORK SERIALIZATION STACK (FLINK 1.7?) • Serialization for broadcasts once per record, not channel • Only one intermediate serialization buffer (on heap) ➢ significantly reduces the memory footprint • see FLINK-9913 TaskManager 1 Subtask 2 RecordWriter
  • 32. © 2018 data Artisans32 OPENSSL-BASED SSL ENGINE (FLINK 1.7?) • Runs native code • Uses advanced CPU instruction sets ➢ May reduce encryption/decryption overhead (needs verification) • see FLINK-9816
  • 33. © 2018 data Artisans33 MOVE OUTPUT FLUSHER TO NETTY • Current implementation may have (GC) problems with many channels ➢ schedule the output flusher inside the Netty event loop • see FLINK-8625
  • 34. THANK YOU! @dataArtisans @ApacheFlink WE ARE HIRING data-artisans.com/careers