SlideShare una empresa de Scribd logo
1 de 66
Descargar para leer sin conexión
KAFKA TO THE MAXKA By Matt Andruff
Kafka Performance Tuning
Welcome!
Matt Andruff - Hortonworks Practice lead @ Yoppworks
@MattAndruff
Because I get asked a
lot...Yoppworks
Because I get asked a
lot...Yoppworks
Because I get asked a
lot...Yoppworks
Performance Tuning...
Agenda
• Performance tuning - Just some quick points
• What you can change
• Simple changes
• Kafka Configuration Changes
• Brief Canned Demo
• Beware Kafka settings are not exciting for everyone
• Architectural changes
Perfomance Tuning
What do you need to make changes?
Performance tuning
There is no magic bullet
Guesses are just Guesses
Empirical fact requires testing
Requires hardware, SME’s, time, effort
It’s non-trivial to do performance testing.
Performance tuning
The better your load tests are the better your tuning will be.
Garbage in, Garbage out.
Performance tuning
The better your load tests are the better your tuning will be.
Garbage in, Garbage out.
Performance tuning
The better your load tests are the better your tuning will be.
Garbage in, Garbage out.
Everyone (Every client) is different
Has a unique signature of data/hardware/topics
Performance tuning
The better your load tests are the better your tuning will be.
Garbage in, Garbage out.
Everyone client is different
Has a unique signature of data/hardware/topics
Tune for bottlenecks found through testing.
Yes, There is always some low hanging fruit.
Beyond Tuning
What your boss understands:
Beyond Tuning
What you understand:
First a minor detour to the OS
I promise to move fast but it can’t be ignored.
To be complete we need to cover some of the basics.
Which OS to use?
The basics
● Noatime
○ removes last access time from files
○ Save’s a write on read.
The basics
● Ext 4 is widely in use
● XFS has shown better performance
metrics
https://kafka.apache.org/documentation.html#filesystems
JVM settings
export $KAFKA_JVM_PERFORMANCE_OPTS = ‘...’
Java 1.8
-Xmx6g -Xms6g -XX:MetaspaceSize=96m -XX:+UseG1GC
-XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35
-XX:G1HeapRegionSize=16M
-XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80
Java 1.7 beware of older versions
-Xms4g -Xmx4g -XX:PermSize=48m -XX:MaxPermSize=48m -XX:+UseG1GC
-XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35
The basics
● File descriptor limits
○ Per broker Partitions * segments +
Overhead
■ Watch this when you upgrade to 0.10
● set vm.swappiness = 0
The basics
● Kafka Data should be on its own disks
● If you encounter read/write issues add
more disks
● Each data folder you add to config will
be written to in round robin
Latest is the Greatest
● Have you upgraded to 0.10
● Add 8 bytes of time stamp
○ Not great for small messages.
● No longer does broker decompression
○ Better performance when you use compression.
● File descriptor limits
○ Segments indexing changed
Defaults are your friends
Defaults are your friends
The default when you drive is to put on your seatbelt.
If you are going to change the default to not wearing a seatbelt I
hope you have thought through your choice.
Kafka’s defaults are setup to help keep you safe.
If you are going to change the default to something else I hope
you have thought through your choice.
The Producer
Default Example
Acks:
Setting Description Risk of Data loss Performance
Acks=0 No acknowledgment from
the server at all.
(Set it and forget it.)
Highest Highest
Acks=1 Leader completes
write of data.
Medium Medium
Acks=all All leaders and
followers have
written the data.
Lowest Lowest
Default Example
Acks:
Setting Description Risk of Data loss Performance
Acks=0 No acknowledgment from
the server at all.
(Set it and forget it.)
Highest Highest
Acks=1 Leader completes
write of data.
Medium Medium
Acks=all All leaders and
followers have
written the data.
Lowest Lowest
Definitions:
Latency: The length of time for one message to be processed.
Throughput: The number of messages processed
Batch:
• “Message 1” - Time 1
• “Message 2” - Time 2
• “Message 3” - Time 3
← Worst Latency
← Best Latency
Batch Management
Producer
Batch -Partition 1- TopicA
Broker
Partition
“data” “data” “data”
Batch -Partition 1- TopicA
Batch -Partition 1- TopicB
“data” “data” “data”
“data”
Segment
Batch Management
Batch.size
- How many messages define the maximum batch size?
Linger.ms
- What is the maximum amount of time to wait before
sending a batch?
Other:
- Same Broker Sending (Piggy Back)
- flush() or close() is called
Batch Management
Producer
Broker
Partition 1 - TopicA
Batch -Partition 1- TopicA
Batch -Partition 1- TopicB
“data” “data” “data”
“data”
Segment
Partition 1 - TopicB
Segment
Batch Management
Default Message size is 2048 (If linger.ms is large)
Buffer.memory / Batch.size > Message size
33554432 / 16384 > 2048
Batch Management
Producer
Batch -Partition 1- TopicA
Broker
Partition
“data” “data” “data”
Segment
Batch Management
Default Message size is 2048 (If linger.ms is small)
Buffer.memory / Batch.size > Message size
33554432 / (< 16384) > (>2048)
Batch Management
Producer
Batch -Partition 1- TopicA
Broker
Partition
“data” “data”
Segment
Batch -Partition 1- TopicB
“data”
Partition 1 - TopicB
Segment
“data”
← Linger is triggering
Before batch is full.
← Using bigger
messages to fill the
batch
Batch Management
Tune your Batch.size/linger.ms
batch.size + linger.ms = latency + through put
batch.size + linger.ms = latency + through put
Once tuned, do not forget to size your buffer.memory
Compression
Compression.type = none
Compression can introduce performance due to transferring less
data over the network. (Cost of additional CPU)
Generalization:
Use snappy ***
*** You should do real performance tests.
Batch Management
Producer
Batch -Partition 1- TopicA
“data” “data”
Batch -Partition 1- TopicB
“data” “data”
Serializer Partitioner
Did we stick with the Defaults?
Custom Class written for performance?
● Partitioner
○ - Create a custom key based on data - help prevent Skew
● Serializer
○ - Pluggable
● Interceptors
○ - Allows manipulation of records into Kafka
○ - Are they being used? Should they? How are they written?
Tuning
To tune performance you need to experiment with different
settings.
Data and throughput are different with every project.
There is no one size fits all.
Luckily there is a tool to help test configurations.
kafka-run-class.sh
bin/kafka-run-class.sh 
org.apache.kafka.clients.tools.ProducerPerformance 
test 50000000 100 -1 acks=1 
bootstrap.servers=esv4-hcl198.yoppworks.rules.com:9092 
buffer.memory=67108864 batch.size=8196
Or use the short cut:
bin/kafka-producer-perf-test.sh 
test 50000000 100 -1 acks=1 
bootstrap.servers=esv4-hcl198.yoppworks.rules.com:9092 
buffer.memory=67108864 batch.size=8196
There is also one for the consumer:
bin/kafka-consumer-perf-test.sh
Time for a quick walkthrough
Monitoring
Ops Clarity
- Now owned by Lightbend - Cadillac of monitoring.
Burrow
- A little Resource heavy, (Kafka client per partition)
- Health monitor has some false positives
Yahoo Kafka-manager
Confluent Control Center
- Confluent distro
Roll your own Kafka JMX & MBeans
Where did they get the name Kafka?
My Guess
Putting Apache Kafka to Use for Event Streams,
https://www.youtube.com/watch?v=el-SqcZLZlI
~ Jay Kreps
Where did they get the name Kafka?
My Guess
Where did they get the name Kafka?
My Guess
Where did they get the name Kafka?
Where did they get the name Kafka?
“I thought that since Kafka was a system optimized for
writing using a writer's name would make sense. I had
taken a lot of lit classes in college and liked Franz Kafka.
Plus the name sounded cool for an open source project.”
~ Jay Kreps
https://www.quora.com/What-is-the-relation-between-Kafka-the-writer-and-Apache-Kafka-the-distributed-messagi
ng-system
Where did they get the name Kafka?
“I thought that since Kafka was a system optimized for writing
using a writer's name would make sense. I had taken a lot of lit classes in
college and liked Franz Kafka. Plus the name sounded cool for an open
source project.” ~ Jay Kreps
https://www.quora.com/What-is-the-relation-between-Kafka-the-writer-and-Apache-Kafka-the-distributed-messagi
ng-system
The Broker
Broker Disk Usage
● What your rate of growth and when
will you need to expand?
● Try and make sure the number of
partions you select covers that growth
Broker Disk Usage
● Log.retention.bytes
■ Default is unlimited (-1)
● Log.retention.[time interval]
■ Default is 7 days (168 hours)
Broker
● num.io.threads
■ Default is 8 - should match physical
disks
Beyond Tuning
How do we optimize writing:
Beyond Tuning
Measure the throughput:
Beyond Tuning
The Consumer
replica.high.watermark.checkpoint.interval.ms
- You might think that the high water mark ensures
reliability. It also has has implications on
performance.
- Whatch our for consumer lag
Beyond Tuning
Beyond Tuning
The future Consumers ability to scale is constrained by the number of partitions.
Beyond Tuning
> # of Partitions means:
> Level of parallelism
> # files open
( Partitions * Segment count * Replication) / Brokers ~= # of open files per machine
10’s of Thousands of files is manageable on appropriate hardware.
> Memory usage (Broker and Zookeeper)
> Leader fail over time (Can be mitigated by increased # brokers)
Beyond Tuning
How do I calculate the number of partitions to have on a broker?
What’s the rule of thumb to start testing at?
[# partitions per broker] = c x [# brokers] x [replication factor]
c ~ Your machine's awesomeness
c ~ Your appetite for risk
c ~ 100 a good safe starting point
Beyond Tuning
Can I move an existing partition around? I just added a new broker, and it’s not sharing the load.
Use: bin/kafka-reassign-partitions.sh
1) Create a JSON file of the topics you want to redistribute topics.json
2) Use kafka-reassign-partitions.sh … --generate to suggest partition reassignment
3) Copy proposed assignment to a JSON file.
4) Use kafka-reassign-partitions.sh … --execute to start the redistirbution process.
a) Can take several hours, depending on data.
5) Use kafka-reassign-partitions.sh … --verify to check progress of the redistirbution process.
Link to documentation from conference sponsor.
topics.json:
{"topics": [{"topic": "weather"},
{"topic": "sensors"}],
"version":1
}
Thanks!
Matt Andruff - Hortonworks Practice lead @ Yoppworks
@MattAndruff
I’m not an expert I just sound like one.

Más contenido relacionado

La actualidad más candente

A visual introduction to Apache Kafka
A visual introduction to Apache KafkaA visual introduction to Apache Kafka
A visual introduction to Apache KafkaPaul Brebner
 
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon
 
CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®confluent
 
Zeus: Uber’s Highly Scalable and Distributed Shuffle as a Service
Zeus: Uber’s Highly Scalable and Distributed Shuffle as a ServiceZeus: Uber’s Highly Scalable and Distributed Shuffle as a Service
Zeus: Uber’s Highly Scalable and Distributed Shuffle as a ServiceDatabricks
 
Kafka Streams State Stores Being Persistent
Kafka Streams State Stores Being PersistentKafka Streams State Stores Being Persistent
Kafka Streams State Stores Being Persistentconfluent
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversScyllaDB
 
Fundamentals of Apache Kafka
Fundamentals of Apache KafkaFundamentals of Apache Kafka
Fundamentals of Apache KafkaChhavi Parasher
 
How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...
How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...
How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...Imply
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsAlluxio, Inc.
 
Deep Dive into Apache Kafka
Deep Dive into Apache KafkaDeep Dive into Apache Kafka
Deep Dive into Apache Kafkaconfluent
 
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth WiesmanWebinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth WiesmanVerverica
 
MongoDB Sharding
MongoDB ShardingMongoDB Sharding
MongoDB ShardingRob Walters
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcachedJurriaan Persyn
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesYoshinori Matsunobu
 
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Flink Forward
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream ProcessingGuido Schmutz
 

La actualidad más candente (20)

A visual introduction to Apache Kafka
A visual introduction to Apache KafkaA visual introduction to Apache Kafka
A visual introduction to Apache Kafka
 
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ Salesforce
 
CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®
 
Zeus: Uber’s Highly Scalable and Distributed Shuffle as a Service
Zeus: Uber’s Highly Scalable and Distributed Shuffle as a ServiceZeus: Uber’s Highly Scalable and Distributed Shuffle as a Service
Zeus: Uber’s Highly Scalable and Distributed Shuffle as a Service
 
Kafka Streams State Stores Being Persistent
Kafka Streams State Stores Being PersistentKafka Streams State Stores Being Persistent
Kafka Streams State Stores Being Persistent
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the Covers
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
 
Fundamentals of Apache Kafka
Fundamentals of Apache KafkaFundamentals of Apache Kafka
Fundamentals of Apache Kafka
 
How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...
How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...
How Netflix Uses Druid in Real-time to Ensure a High Quality Streaming Experi...
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
 
Deep Dive into Apache Kafka
Deep Dive into Apache KafkaDeep Dive into Apache Kafka
Deep Dive into Apache Kafka
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth WiesmanWebinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
 
MongoDB Sharding
MongoDB ShardingMongoDB Sharding
MongoDB Sharding
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 
Apache Kafka at LinkedIn
Apache Kafka at LinkedInApache Kafka at LinkedIn
Apache Kafka at LinkedIn
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability Practices
 
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream Processing
 

Similar a Kafka to the Maxka - (Kafka Performance Tuning)

3 Flink Mistakes We Made So You Won't Have To
3 Flink Mistakes We Made So You Won't Have To3 Flink Mistakes We Made So You Won't Have To
3 Flink Mistakes We Made So You Won't Have ToHostedbyConfluent
 
(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features
(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features
(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New FeaturesAmazon Web Services
 
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward
 
Geek Sync | Guide to Understanding and Monitoring Tempdb
Geek Sync | Guide to Understanding and Monitoring TempdbGeek Sync | Guide to Understanding and Monitoring Tempdb
Geek Sync | Guide to Understanding and Monitoring TempdbIDERA Software
 
DevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDinakar Guniguntala
 
Explore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and SnappydataExplore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and SnappydataData Con LA
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayC4Media
 
Oracle Performance On Linux X86 systems
Oracle  Performance On Linux  X86 systems Oracle  Performance On Linux  X86 systems
Oracle Performance On Linux X86 systems Baruch Osoveskiy
 
Tuning tips for Apache Spark Jobs
Tuning tips for Apache Spark JobsTuning tips for Apache Spark Jobs
Tuning tips for Apache Spark JobsSamir Bessalah
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafkaSamuel Kerrien
 
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...javier ramirez
 
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxOptimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxScyllaDB
 
Big Lab Problems Solved with Spectrum Scale: Innovations for the Coral Program
Big Lab Problems Solved with Spectrum Scale: Innovations for the Coral ProgramBig Lab Problems Solved with Spectrum Scale: Innovations for the Coral Program
Big Lab Problems Solved with Spectrum Scale: Innovations for the Coral Programinside-BigData.com
 
Ceph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architectureCeph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architectureCeph Community
 
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA ArchitectureCeph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA ArchitectureDanielle Womboldt
 
Hardware Provisioning
Hardware ProvisioningHardware Provisioning
Hardware ProvisioningMongoDB
 
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...Flink Forward
 
Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community
 
Zendcon scaling magento
Zendcon scaling magentoZendcon scaling magento
Zendcon scaling magentoMathew Beane
 
071410 sun a_1515_feldman_stephen
071410 sun a_1515_feldman_stephen071410 sun a_1515_feldman_stephen
071410 sun a_1515_feldman_stephenSteve Feldman
 

Similar a Kafka to the Maxka - (Kafka Performance Tuning) (20)

3 Flink Mistakes We Made So You Won't Have To
3 Flink Mistakes We Made So You Won't Have To3 Flink Mistakes We Made So You Won't Have To
3 Flink Mistakes We Made So You Won't Have To
 
(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features
(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features
(DAT402) Amazon RDS PostgreSQL:Lessons Learned & New Features
 
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
 
Geek Sync | Guide to Understanding and Monitoring Tempdb
Geek Sync | Guide to Understanding and Monitoring TempdbGeek Sync | Guide to Understanding and Monitoring Tempdb
Geek Sync | Guide to Understanding and Monitoring Tempdb
 
DevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on Kubernetes
 
Explore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and SnappydataExplore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and Snappydata
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
 
Oracle Performance On Linux X86 systems
Oracle  Performance On Linux  X86 systems Oracle  Performance On Linux  X86 systems
Oracle Performance On Linux X86 systems
 
Tuning tips for Apache Spark Jobs
Tuning tips for Apache Spark JobsTuning tips for Apache Spark Jobs
Tuning tips for Apache Spark Jobs
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
 
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
Cómo se diseña una base de datos que pueda ingerir más de cuatro millones de ...
 
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxOptimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
 
Big Lab Problems Solved with Spectrum Scale: Innovations for the Coral Program
Big Lab Problems Solved with Spectrum Scale: Innovations for the Coral ProgramBig Lab Problems Solved with Spectrum Scale: Innovations for the Coral Program
Big Lab Problems Solved with Spectrum Scale: Innovations for the Coral Program
 
Ceph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architectureCeph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architecture
 
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA ArchitectureCeph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
 
Hardware Provisioning
Hardware ProvisioningHardware Provisioning
Hardware Provisioning
 
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
 
Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph
 
Zendcon scaling magento
Zendcon scaling magentoZendcon scaling magento
Zendcon scaling magento
 
071410 sun a_1515_feldman_stephen
071410 sun a_1515_feldman_stephen071410 sun a_1515_feldman_stephen
071410 sun a_1515_feldman_stephen
 

Más de DataWorks Summit

Floating on a RAFT: HBase Durability with Apache Ratis
Floating on a RAFT: HBase Durability with Apache RatisFloating on a RAFT: HBase Durability with Apache Ratis
Floating on a RAFT: HBase Durability with Apache RatisDataWorks Summit
 
Tracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFi
Tracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFiTracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFi
Tracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFiDataWorks Summit
 
HBase Tales From the Trenches - Short stories about most common HBase operati...
HBase Tales From the Trenches - Short stories about most common HBase operati...HBase Tales From the Trenches - Short stories about most common HBase operati...
HBase Tales From the Trenches - Short stories about most common HBase operati...DataWorks Summit
 
Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...
Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...
Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...DataWorks Summit
 
Managing the Dewey Decimal System
Managing the Dewey Decimal SystemManaging the Dewey Decimal System
Managing the Dewey Decimal SystemDataWorks Summit
 
Practical NoSQL: Accumulo's dirlist Example
Practical NoSQL: Accumulo's dirlist ExamplePractical NoSQL: Accumulo's dirlist Example
Practical NoSQL: Accumulo's dirlist ExampleDataWorks Summit
 
HBase Global Indexing to support large-scale data ingestion at Uber
HBase Global Indexing to support large-scale data ingestion at UberHBase Global Indexing to support large-scale data ingestion at Uber
HBase Global Indexing to support large-scale data ingestion at UberDataWorks Summit
 
Scaling Cloud-Scale Translytics Workloads with Omid and Phoenix
Scaling Cloud-Scale Translytics Workloads with Omid and PhoenixScaling Cloud-Scale Translytics Workloads with Omid and Phoenix
Scaling Cloud-Scale Translytics Workloads with Omid and PhoenixDataWorks Summit
 
Building the High Speed Cybersecurity Data Pipeline Using Apache NiFi
Building the High Speed Cybersecurity Data Pipeline Using Apache NiFiBuilding the High Speed Cybersecurity Data Pipeline Using Apache NiFi
Building the High Speed Cybersecurity Data Pipeline Using Apache NiFiDataWorks Summit
 
Supporting Apache HBase : Troubleshooting and Supportability Improvements
Supporting Apache HBase : Troubleshooting and Supportability ImprovementsSupporting Apache HBase : Troubleshooting and Supportability Improvements
Supporting Apache HBase : Troubleshooting and Supportability ImprovementsDataWorks Summit
 
Security Framework for Multitenant Architecture
Security Framework for Multitenant ArchitectureSecurity Framework for Multitenant Architecture
Security Framework for Multitenant ArchitectureDataWorks Summit
 
Presto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything EnginePresto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything EngineDataWorks Summit
 
Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...
Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...
Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...DataWorks Summit
 
Extending Twitter's Data Platform to Google Cloud
Extending Twitter's Data Platform to Google CloudExtending Twitter's Data Platform to Google Cloud
Extending Twitter's Data Platform to Google CloudDataWorks Summit
 
Event-Driven Messaging and Actions using Apache Flink and Apache NiFi
Event-Driven Messaging and Actions using Apache Flink and Apache NiFiEvent-Driven Messaging and Actions using Apache Flink and Apache NiFi
Event-Driven Messaging and Actions using Apache Flink and Apache NiFiDataWorks Summit
 
Securing Data in Hybrid on-premise and Cloud Environments using Apache Ranger
Securing Data in Hybrid on-premise and Cloud Environments using Apache RangerSecuring Data in Hybrid on-premise and Cloud Environments using Apache Ranger
Securing Data in Hybrid on-premise and Cloud Environments using Apache RangerDataWorks Summit
 
Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...
Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...
Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...DataWorks Summit
 
Computer Vision: Coming to a Store Near You
Computer Vision: Coming to a Store Near YouComputer Vision: Coming to a Store Near You
Computer Vision: Coming to a Store Near YouDataWorks Summit
 
Big Data Genomics: Clustering Billions of DNA Sequences with Apache Spark
Big Data Genomics: Clustering Billions of DNA Sequences with Apache SparkBig Data Genomics: Clustering Billions of DNA Sequences with Apache Spark
Big Data Genomics: Clustering Billions of DNA Sequences with Apache SparkDataWorks Summit
 

Más de DataWorks Summit (20)

Data Science Crash Course
Data Science Crash CourseData Science Crash Course
Data Science Crash Course
 
Floating on a RAFT: HBase Durability with Apache Ratis
Floating on a RAFT: HBase Durability with Apache RatisFloating on a RAFT: HBase Durability with Apache Ratis
Floating on a RAFT: HBase Durability with Apache Ratis
 
Tracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFi
Tracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFiTracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFi
Tracking Crime as It Occurs with Apache Phoenix, Apache HBase and Apache NiFi
 
HBase Tales From the Trenches - Short stories about most common HBase operati...
HBase Tales From the Trenches - Short stories about most common HBase operati...HBase Tales From the Trenches - Short stories about most common HBase operati...
HBase Tales From the Trenches - Short stories about most common HBase operati...
 
Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...
Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...
Optimizing Geospatial Operations with Server-side Programming in HBase and Ac...
 
Managing the Dewey Decimal System
Managing the Dewey Decimal SystemManaging the Dewey Decimal System
Managing the Dewey Decimal System
 
Practical NoSQL: Accumulo's dirlist Example
Practical NoSQL: Accumulo's dirlist ExamplePractical NoSQL: Accumulo's dirlist Example
Practical NoSQL: Accumulo's dirlist Example
 
HBase Global Indexing to support large-scale data ingestion at Uber
HBase Global Indexing to support large-scale data ingestion at UberHBase Global Indexing to support large-scale data ingestion at Uber
HBase Global Indexing to support large-scale data ingestion at Uber
 
Scaling Cloud-Scale Translytics Workloads with Omid and Phoenix
Scaling Cloud-Scale Translytics Workloads with Omid and PhoenixScaling Cloud-Scale Translytics Workloads with Omid and Phoenix
Scaling Cloud-Scale Translytics Workloads with Omid and Phoenix
 
Building the High Speed Cybersecurity Data Pipeline Using Apache NiFi
Building the High Speed Cybersecurity Data Pipeline Using Apache NiFiBuilding the High Speed Cybersecurity Data Pipeline Using Apache NiFi
Building the High Speed Cybersecurity Data Pipeline Using Apache NiFi
 
Supporting Apache HBase : Troubleshooting and Supportability Improvements
Supporting Apache HBase : Troubleshooting and Supportability ImprovementsSupporting Apache HBase : Troubleshooting and Supportability Improvements
Supporting Apache HBase : Troubleshooting and Supportability Improvements
 
Security Framework for Multitenant Architecture
Security Framework for Multitenant ArchitectureSecurity Framework for Multitenant Architecture
Security Framework for Multitenant Architecture
 
Presto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything EnginePresto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything Engine
 
Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...
Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...
Introducing MlFlow: An Open Source Platform for the Machine Learning Lifecycl...
 
Extending Twitter's Data Platform to Google Cloud
Extending Twitter's Data Platform to Google CloudExtending Twitter's Data Platform to Google Cloud
Extending Twitter's Data Platform to Google Cloud
 
Event-Driven Messaging and Actions using Apache Flink and Apache NiFi
Event-Driven Messaging and Actions using Apache Flink and Apache NiFiEvent-Driven Messaging and Actions using Apache Flink and Apache NiFi
Event-Driven Messaging and Actions using Apache Flink and Apache NiFi
 
Securing Data in Hybrid on-premise and Cloud Environments using Apache Ranger
Securing Data in Hybrid on-premise and Cloud Environments using Apache RangerSecuring Data in Hybrid on-premise and Cloud Environments using Apache Ranger
Securing Data in Hybrid on-premise and Cloud Environments using Apache Ranger
 
Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...
Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...
Big Data Meets NVM: Accelerating Big Data Processing with Non-Volatile Memory...
 
Computer Vision: Coming to a Store Near You
Computer Vision: Coming to a Store Near YouComputer Vision: Coming to a Store Near You
Computer Vision: Coming to a Store Near You
 
Big Data Genomics: Clustering Billions of DNA Sequences with Apache Spark
Big Data Genomics: Clustering Billions of DNA Sequences with Apache SparkBig Data Genomics: Clustering Billions of DNA Sequences with Apache Spark
Big Data Genomics: Clustering Billions of DNA Sequences with Apache Spark
 

Último

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Kafka to the Maxka - (Kafka Performance Tuning)

  • 1. KAFKA TO THE MAXKA By Matt Andruff
  • 3. Welcome! Matt Andruff - Hortonworks Practice lead @ Yoppworks @MattAndruff
  • 4. Because I get asked a lot...Yoppworks
  • 5. Because I get asked a lot...Yoppworks
  • 6. Because I get asked a lot...Yoppworks
  • 8. Agenda • Performance tuning - Just some quick points • What you can change • Simple changes • Kafka Configuration Changes • Brief Canned Demo • Beware Kafka settings are not exciting for everyone • Architectural changes
  • 9. Perfomance Tuning What do you need to make changes?
  • 10. Performance tuning There is no magic bullet Guesses are just Guesses Empirical fact requires testing Requires hardware, SME’s, time, effort It’s non-trivial to do performance testing.
  • 11. Performance tuning The better your load tests are the better your tuning will be. Garbage in, Garbage out.
  • 12. Performance tuning The better your load tests are the better your tuning will be. Garbage in, Garbage out.
  • 13. Performance tuning The better your load tests are the better your tuning will be. Garbage in, Garbage out. Everyone (Every client) is different Has a unique signature of data/hardware/topics
  • 14. Performance tuning The better your load tests are the better your tuning will be. Garbage in, Garbage out. Everyone client is different Has a unique signature of data/hardware/topics Tune for bottlenecks found through testing. Yes, There is always some low hanging fruit.
  • 15. Beyond Tuning What your boss understands:
  • 16. Beyond Tuning What you understand:
  • 17. First a minor detour to the OS I promise to move fast but it can’t be ignored. To be complete we need to cover some of the basics.
  • 18. Which OS to use?
  • 19. The basics ● Noatime ○ removes last access time from files ○ Save’s a write on read.
  • 20. The basics ● Ext 4 is widely in use ● XFS has shown better performance metrics https://kafka.apache.org/documentation.html#filesystems
  • 21. JVM settings export $KAFKA_JVM_PERFORMANCE_OPTS = ‘...’ Java 1.8 -Xmx6g -Xms6g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80 Java 1.7 beware of older versions -Xms4g -Xmx4g -XX:PermSize=48m -XX:MaxPermSize=48m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35
  • 22. The basics ● File descriptor limits ○ Per broker Partitions * segments + Overhead ■ Watch this when you upgrade to 0.10 ● set vm.swappiness = 0
  • 23. The basics ● Kafka Data should be on its own disks ● If you encounter read/write issues add more disks ● Each data folder you add to config will be written to in round robin
  • 24. Latest is the Greatest ● Have you upgraded to 0.10 ● Add 8 bytes of time stamp ○ Not great for small messages. ● No longer does broker decompression ○ Better performance when you use compression. ● File descriptor limits ○ Segments indexing changed
  • 25. Defaults are your friends
  • 26. Defaults are your friends The default when you drive is to put on your seatbelt. If you are going to change the default to not wearing a seatbelt I hope you have thought through your choice. Kafka’s defaults are setup to help keep you safe. If you are going to change the default to something else I hope you have thought through your choice.
  • 28. Default Example Acks: Setting Description Risk of Data loss Performance Acks=0 No acknowledgment from the server at all. (Set it and forget it.) Highest Highest Acks=1 Leader completes write of data. Medium Medium Acks=all All leaders and followers have written the data. Lowest Lowest
  • 29. Default Example Acks: Setting Description Risk of Data loss Performance Acks=0 No acknowledgment from the server at all. (Set it and forget it.) Highest Highest Acks=1 Leader completes write of data. Medium Medium Acks=all All leaders and followers have written the data. Lowest Lowest
  • 30. Definitions: Latency: The length of time for one message to be processed. Throughput: The number of messages processed Batch: • “Message 1” - Time 1 • “Message 2” - Time 2 • “Message 3” - Time 3 ← Worst Latency ← Best Latency
  • 31. Batch Management Producer Batch -Partition 1- TopicA Broker Partition “data” “data” “data” Batch -Partition 1- TopicA Batch -Partition 1- TopicB “data” “data” “data” “data” Segment
  • 32. Batch Management Batch.size - How many messages define the maximum batch size? Linger.ms - What is the maximum amount of time to wait before sending a batch? Other: - Same Broker Sending (Piggy Back) - flush() or close() is called
  • 33. Batch Management Producer Broker Partition 1 - TopicA Batch -Partition 1- TopicA Batch -Partition 1- TopicB “data” “data” “data” “data” Segment Partition 1 - TopicB Segment
  • 34. Batch Management Default Message size is 2048 (If linger.ms is large) Buffer.memory / Batch.size > Message size 33554432 / 16384 > 2048
  • 35. Batch Management Producer Batch -Partition 1- TopicA Broker Partition “data” “data” “data” Segment
  • 36. Batch Management Default Message size is 2048 (If linger.ms is small) Buffer.memory / Batch.size > Message size 33554432 / (< 16384) > (>2048)
  • 37. Batch Management Producer Batch -Partition 1- TopicA Broker Partition “data” “data” Segment Batch -Partition 1- TopicB “data” Partition 1 - TopicB Segment “data” ← Linger is triggering Before batch is full. ← Using bigger messages to fill the batch
  • 38. Batch Management Tune your Batch.size/linger.ms batch.size + linger.ms = latency + through put batch.size + linger.ms = latency + through put Once tuned, do not forget to size your buffer.memory
  • 39. Compression Compression.type = none Compression can introduce performance due to transferring less data over the network. (Cost of additional CPU) Generalization: Use snappy *** *** You should do real performance tests.
  • 40. Batch Management Producer Batch -Partition 1- TopicA “data” “data” Batch -Partition 1- TopicB “data” “data” Serializer Partitioner
  • 41. Did we stick with the Defaults? Custom Class written for performance? ● Partitioner ○ - Create a custom key based on data - help prevent Skew ● Serializer ○ - Pluggable ● Interceptors ○ - Allows manipulation of records into Kafka ○ - Are they being used? Should they? How are they written?
  • 42. Tuning To tune performance you need to experiment with different settings. Data and throughput are different with every project. There is no one size fits all. Luckily there is a tool to help test configurations.
  • 43. kafka-run-class.sh bin/kafka-run-class.sh org.apache.kafka.clients.tools.ProducerPerformance test 50000000 100 -1 acks=1 bootstrap.servers=esv4-hcl198.yoppworks.rules.com:9092 buffer.memory=67108864 batch.size=8196 Or use the short cut: bin/kafka-producer-perf-test.sh test 50000000 100 -1 acks=1 bootstrap.servers=esv4-hcl198.yoppworks.rules.com:9092 buffer.memory=67108864 batch.size=8196 There is also one for the consumer: bin/kafka-consumer-perf-test.sh
  • 44. Time for a quick walkthrough
  • 45. Monitoring Ops Clarity - Now owned by Lightbend - Cadillac of monitoring. Burrow - A little Resource heavy, (Kafka client per partition) - Health monitor has some false positives Yahoo Kafka-manager Confluent Control Center - Confluent distro Roll your own Kafka JMX & MBeans
  • 46. Where did they get the name Kafka? My Guess Putting Apache Kafka to Use for Event Streams, https://www.youtube.com/watch?v=el-SqcZLZlI ~ Jay Kreps
  • 47. Where did they get the name Kafka? My Guess
  • 48. Where did they get the name Kafka? My Guess
  • 49. Where did they get the name Kafka?
  • 50. Where did they get the name Kafka? “I thought that since Kafka was a system optimized for writing using a writer's name would make sense. I had taken a lot of lit classes in college and liked Franz Kafka. Plus the name sounded cool for an open source project.” ~ Jay Kreps https://www.quora.com/What-is-the-relation-between-Kafka-the-writer-and-Apache-Kafka-the-distributed-messagi ng-system
  • 51. Where did they get the name Kafka? “I thought that since Kafka was a system optimized for writing using a writer's name would make sense. I had taken a lot of lit classes in college and liked Franz Kafka. Plus the name sounded cool for an open source project.” ~ Jay Kreps https://www.quora.com/What-is-the-relation-between-Kafka-the-writer-and-Apache-Kafka-the-distributed-messagi ng-system
  • 53. Broker Disk Usage ● What your rate of growth and when will you need to expand? ● Try and make sure the number of partions you select covers that growth
  • 54. Broker Disk Usage ● Log.retention.bytes ■ Default is unlimited (-1) ● Log.retention.[time interval] ■ Default is 7 days (168 hours)
  • 55. Broker ● num.io.threads ■ Default is 8 - should match physical disks
  • 56. Beyond Tuning How do we optimize writing:
  • 60. replica.high.watermark.checkpoint.interval.ms - You might think that the high water mark ensures reliability. It also has has implications on performance. - Whatch our for consumer lag
  • 62. Beyond Tuning The future Consumers ability to scale is constrained by the number of partitions.
  • 63. Beyond Tuning > # of Partitions means: > Level of parallelism > # files open ( Partitions * Segment count * Replication) / Brokers ~= # of open files per machine 10’s of Thousands of files is manageable on appropriate hardware. > Memory usage (Broker and Zookeeper) > Leader fail over time (Can be mitigated by increased # brokers)
  • 64. Beyond Tuning How do I calculate the number of partitions to have on a broker? What’s the rule of thumb to start testing at? [# partitions per broker] = c x [# brokers] x [replication factor] c ~ Your machine's awesomeness c ~ Your appetite for risk c ~ 100 a good safe starting point
  • 65. Beyond Tuning Can I move an existing partition around? I just added a new broker, and it’s not sharing the load. Use: bin/kafka-reassign-partitions.sh 1) Create a JSON file of the topics you want to redistribute topics.json 2) Use kafka-reassign-partitions.sh … --generate to suggest partition reassignment 3) Copy proposed assignment to a JSON file. 4) Use kafka-reassign-partitions.sh … --execute to start the redistirbution process. a) Can take several hours, depending on data. 5) Use kafka-reassign-partitions.sh … --verify to check progress of the redistirbution process. Link to documentation from conference sponsor. topics.json: {"topics": [{"topic": "weather"}, {"topic": "sensors"}], "version":1 }
  • 66. Thanks! Matt Andruff - Hortonworks Practice lead @ Yoppworks @MattAndruff I’m not an expert I just sound like one.