SlideShare a Scribd company logo
1 of 50
Kafka Connect
Operational Lessons Learned
From the Trenches
Liz Bennett
Software Engineer, Confluent
About Me
Liz Bennett
Currently @
As of last week! 😄
Formerly @
Formerly @
Formerly @
2
Get ready for a potpourri of Kafka Connect
operational advice, lessons learned, and
random information!
3
We’ll cover...
● Kafka Connect deployment and use cases
● Useful operational tools
● End-to-End monitoring
● Lessons learned from outages
4
Deployment Model and Use Cases
The Cluster
● Distributed Kafka Connect Cluster
● Self-service for Data Scientists
● ~50 workers
● ~500 connectors
● ~1000 tasks
● Low/medium Kafka volume
● 6 different connectors installed
○ RabbitMQ Source & Sink, Elasticsearch Sink, S3 Sink, SQS Source, Feature Store Sink
● All data is json formatted
6
7
Read my blog post to learn more!
Putting the Power of Apache Kafka into the Hands of Data Scientists
8
Useful Operational Utilities
Jobs, Metrics, Alerts, Dashboards, Services, Transforms
Jobs
10
Jobs
● Restart crashed connectors 🎬
○ Post to slack, include crash reason
● Verify resources in external systems 🕵
● Health checks 😷
● Autoscale # of tasks ⚖
● Backup connect-configs topic 💾
○ Store in Github to easily review history
● Expire Elasticsearch indices ☠
● CI/CD jobs to build custom connectors 🚢
11
Dashboards &
Metrics
12
Dashboards & Metrics
● Kafka Connect heap usage dashboard and alerts
● Kafka consumer lags dashboard and alerts
● ❗Very Important❗: per topic messages/sec❗AND❗ bytes/sec
○ For debugging, alerting and auto-scaling
● # of tasks
● # of connectors
● # of open resources (e.g. TCP connections)
13
Single Message
Transforms
14
Single Message Transforms
Standard Transforms
● TimestampRouter
○ Used in Elasticsearch connectors
Custom Transforms
● RegexFieldFilter
○ Filter out messages by matching Regex to Json path
○ Skip corrupt data
● DropField
○ Delete fields, e.g. PII
○ Make Elasticsearch happy
15
Services
16
Kafka Connect
Admin Service
17
Admin Service
● Wraps Kafka Connect API 🎁
● Manages resources in external data systems 👉
○ Create tables in the Hive Metastore
○ Configure alerts
○ Create/dete topics
○ TODO: create index patterns in Kibana
● Sample topics in Kafka 🔬
18
Example: Kafka Connect S3 API
{
"connector.class": "io.confluent.connect.s3.S3SinkConnector", "s3.region": "us-east-1","topics.dir":
"dw","flush.size": "100","tasks.max": "1",
"timezone": "UTC","sf.s3.borderland.api.config": "foo.com”,"sf.metadata.owner.team": ":team:infra",
"transforms": "EventNameRegexFilter","sf.s3.hinterland.api.config": "foo.com,
"transforms.EventNameRegexFilter.field.path": "$.event_name","locale": "en","sf.s3.formatter.table.has.writets":
"true",
"sf.s3.partitioner.db.name": "db_name",
"format.class": "com.stitchfix.datahighway.sfs3connector.SFS3FormatDailyPartitions",
"schema.generator.class":
"io.confluent.connect.storage.hive.schema.TimeBasedSchemaGenerator","sf.s3.formatter.event.name.regex.match.list":
"^.*$",
"sf.s3.formatter.payload.field": "$.payload",
"sf.s3.formatter.field.timestamp.transformers.map": "{"$.metadata.timestamp":"yyyy-MM-dd
HH:mm:ss.SSSSSS","$.payload.ts_posted":"yyyy-MM-dd HH:mm:ss.SSSSSS"}",
"s3.bucket.name": "stitchfix.aa.event","partition.duration.ms": "3600000","sf.s3.formatter.timestamp.field":
"$.metadata.timestamp",
"topics": "my_topic","sf.s3.partitioner.table.name": "my_table_in_s3","sf.s3.formatter.s3.timestamps.format":
"yyyy-MM-dd HH:mm:ss.SSS000",
"transforms.EventNameRegexFilter.regex": "^.*$","partitioner.class":
"com.stitchfix.datahighway.sfs3connector.SFS3PartitionerDailyPartitions",
"name": "my-s3-connector","sf.metadata.owner.email": "foo.bar@stitchfix.com",
"storage.class": "io.confluent.connect.s3.storage.S3Storage","rotate.schedule.interval.ms": "30000",
"path.format": "'year'=YYYY/'month'=MM/'day'=dd/'hour'=HH","transforms.EventNameRegexFilter.type":
"com.stitchfix.datahighway.transforms.FieldRegexFilter",
"schemas.enable": "false","sf.s3.formatter.event.name.field": "$.event_name"
}
19
Example: Wrapped API
{
"processing_threads": 1,
"name": "my-s3-connector",
"topics": ["my_topic"],
"table_name": "my_table_in_s3",
"flush_size": 100,
"flush_interval_seconds": 30,
"owner_email": "bob.ross@happytrees.com",
"owner_team": ":team:painters"
} 20
API Wrapper
● Hard codes default values
○ AWS defaults
○ Schema related defaults
○ Security related defaults
○ Kafka hostnames
○ Kafka Connect class name configurations
● Injects custom fields
○ Connector owner metadata
21
API Wrapper Design
Requirements
● Adding new connectors should be very easy
● Adding new fields to connectors should very easy
● Typos should be hard to make, ideally statically enforced by compiler
Design
● Redesigned 3 times
● Used Jackson Json Annotations for Json SerDe
● Very hierarchical OOP design
● Lots of tests...
22
API Wrapper Lessons Learned
Pros 👍
● Greatly simplified the web UI React code
● Exposed simple API for other teams to script against
● Consolidated default configs in one place
● Totally abstracts Kafka Connect
Cons 👎
● Friction when installing new connectors
23
End-to-End Monitoring
End-to-End Monitoring Requirements
● Monitor for
○ Delayed data
○ Duplicated data
○ Previously delivered data has disappeared
○ “Late arriving” data is not correctly delivered
○ Failures to publish data
● All ingresses and egresses are monitored 24/7
● Use user-level interfaces only
● ❗Very important❗: staging must have all the same monitoring as prod!!
25
Tracer Bullets
26
Tracer Bullets Overview
● Send synthetic events (“tracer bullets”) to all ingress points
● Funnel all tracer bullets into tracer_bullet topic
● Create at least 1 of every kind of Sink Connector consuming from the
tracer_bullet topic
● Create tracer bullets with logical timestamps
● Send current and “late arriving” data
● Persist metadata for tracer bullets in external system (i.e. Elasticsearch)
27
28
29
30
31
32
Tracer Bullet Payloads
Must include at least
● Unique id
● ❗Very important❗ LOGICAL timestamp (a.k.a event time)
33
Tracer Bullets Metadata
Tracer bullet metadata should include
● Timestamp sent
● Tracer bullet’s unique ID
● Ingress point
● Expected egress points
● Send status (SUCCESS, SEND_FAILED, etc.)
● # of duplicates found in sink
● Delivery timestamp (if delivered)
● Environment (dev/staging/prod)
34
Tracer Bullet Polling
● Continuously queries every destination
○ Queries a sliding window of several hours
○ Queries the “late arriving” tracer bullets
● Check for duplicates
● Updates metadata when tracer bullets are delivered (or disappear!)
35
Tracer Bullet Alerting
● Poll the tracer bullet metadata and alert when:
○ Duplicates were found
○ Tracer bullets are delayed (according to your SLAs)
○ Previously delivered tracer bullets mysteriously disappear
○ Tracer bullets failed to send in the first place
● Alert if there is no tracer bullet metadata
36
Tracer Bullet Dashboards
37
Tracer Bullet Summary Job ❗Very Important❗
● Generate daily reports
○ Overall end-to-end latency
○ No. of tracer bullets sent per sink/source
● Indicates tracer bullets are functioning properly
38
Tracer Bullets Lessons Learned
● Make them extensible!
● Tracer bullets: just a big streaming application… write good tests!
● Dev environments are hard…
● Tracer bullets allowed for fewer integration tests
39
Lessons Learned the Hard Way
Production Issues, Annoying Gotchas
Pausing Connectors
● PUT /connectors/my-connector/pause
● What does pausing connectors actually do?
○ Pauses poll loop
● How to really stop a connector?
○ Delete and recreate
○ Shut down Kafka Connect
41
Jar Hell
[2018-02-18 10:28:33,290] INFO Loading plugin from: /home/ubuntu/kafka_2.11-1.0.0/plugins/lib
(org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:179)
Exception in thread "main" java.lang.NoSuchMethodError:
com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
at org.reflections.Reflections.expandSuperTypes(Reflections.java:380)
at org.reflections.Reflections.<init>(Reflections.java:126)
at
org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:258)
at
org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:201)
at
org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:193)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:153)
at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:47)
at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:70)f
42
Jar Hell
[2018-02-18 10:28:33,290] INFO Loading plugin from: /home/ubuntu/kafka_2.11-1.0.0/plugins/lib
(org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:179)
Exception in thread "main" java.lang.NoSuchMethodError:
com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
at org.reflections.Reflections.expandSuperTypes(Reflections.java:380)
at org.reflections.Reflections.<init>(Reflections.java:126)
at
org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:258)
at
org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:201)
at
org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:193)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:153)
at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:47)
at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:70)f
43
Jar Hell
● As of version 0.11.0.0 (CP 3.3.0), Kafka Connect has plugin.path
● USE PLUGIN.PATH!!!!
44
Schemas
● Migrating to schemas is really tough
● Use schemas from the beginning
● Some connectors require schemas
○ JDBC Sink Connector
45
Rebalancing
What is it
● Created/deleted connectors & added/removed workers trigger rebalances
Why is it bad
● API becomes unresponsive (responds with 409 status)
● Thundering rebalances caused instability in Elasticsearch
● S3 Connector + RegexFieldFilter transform caused big problems
● As of 2.3.0 (CP 5.3.0) rebalancing is much better!!! Upgrade, upgrade upgrade!
○ Shout out to Konstantine Karantasis for Cooperative Incremental Rebalances
46
Conclusion
Conclusion
● Kafka Connect is awesome! 😄😄😄
● Metrics 📈
○ ❗Very Important❗: per topic message/sec❗AND❗ bytes/sec
● Write an admin service to tie together your whole system 🎁
● End-to-end monitoring 🔥🔥🔥
○ ❗Very Important❗: have monitoring in both prod and staging
○ ❗Very Important❗: generate daily summary reports
○ ❗Very Important❗: universal support for logical timestamps
● Upgrade early and upgrade often! 💯
48
Questions?
49
Thank you!
lbennett@confluent.io ✉
@zzbennett

More Related Content

What's hot

RAFT Consensus Algorithm
RAFT Consensus AlgorithmRAFT Consensus Algorithm
RAFT Consensus Algorithmsangyun han
 
user Behavior Analysis with Session Windows and Apache Kafka's Streams API
user Behavior Analysis with Session Windows and Apache Kafka's Streams APIuser Behavior Analysis with Session Windows and Apache Kafka's Streams API
user Behavior Analysis with Session Windows and Apache Kafka's Streams APIconfluent
 
Building robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and DebeziumBuilding robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and DebeziumTathastu.ai
 
Apache Kafka in the Airline, Aviation and Travel Industry
Apache Kafka in the Airline, Aviation and Travel IndustryApache Kafka in the Airline, Aviation and Travel Industry
Apache Kafka in the Airline, Aviation and Travel IndustryKai Wähner
 
Monitoring Apache Kafka
Monitoring Apache KafkaMonitoring Apache Kafka
Monitoring Apache Kafkaconfluent
 
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...luisw19
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connectconfluent
 
Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...
Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...
Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...Kai Wähner
 
When NOT to use Apache Kafka?
When NOT to use Apache Kafka?When NOT to use Apache Kafka?
When NOT to use Apache Kafka?Kai Wähner
 
Asynchronous stream processing with Akka Streams
Asynchronous stream processing with Akka StreamsAsynchronous stream processing with Akka Streams
Asynchronous stream processing with Akka StreamsJohan Andrén
 
Introduction to Progressive Web Apps (PWA)
Introduction to Progressive Web Apps (PWA)Introduction to Progressive Web Apps (PWA)
Introduction to Progressive Web Apps (PWA)Sandip Nirmal
 
Front end development
Front end developmentFront end development
Front end developmentMaitrikpaida
 
GraphQL Introduction with Spring Boot
GraphQL Introduction with Spring BootGraphQL Introduction with Spring Boot
GraphQL Introduction with Spring Bootvipin kumar
 
Power BI Reporting & Project Online
Power BI Reporting & Project OnlinePower BI Reporting & Project Online
Power BI Reporting & Project OnlineHari Thapliyal
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?confluent
 
Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...
Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...
Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...Jouko Nyholm
 
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache KafkaReal-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache KafkaKai Wähner
 
Graphql Overview By Chirag Dodia
Graphql Overview By Chirag DodiaGraphql Overview By Chirag Dodia
Graphql Overview By Chirag Dodiavijaygolani
 

What's hot (20)

Web server
Web serverWeb server
Web server
 
RAFT Consensus Algorithm
RAFT Consensus AlgorithmRAFT Consensus Algorithm
RAFT Consensus Algorithm
 
user Behavior Analysis with Session Windows and Apache Kafka's Streams API
user Behavior Analysis with Session Windows and Apache Kafka's Streams APIuser Behavior Analysis with Session Windows and Apache Kafka's Streams API
user Behavior Analysis with Session Windows and Apache Kafka's Streams API
 
Building robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and DebeziumBuilding robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and Debezium
 
Apache Kafka in the Airline, Aviation and Travel Industry
Apache Kafka in the Airline, Aviation and Travel IndustryApache Kafka in the Airline, Aviation and Travel Industry
Apache Kafka in the Airline, Aviation and Travel Industry
 
Monitoring Apache Kafka
Monitoring Apache KafkaMonitoring Apache Kafka
Monitoring Apache Kafka
 
Graphql
GraphqlGraphql
Graphql
 
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
 
Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...
Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...
Resilient Real-time Data Streaming across the Edge and Hybrid Cloud with Apac...
 
When NOT to use Apache Kafka?
When NOT to use Apache Kafka?When NOT to use Apache Kafka?
When NOT to use Apache Kafka?
 
Asynchronous stream processing with Akka Streams
Asynchronous stream processing with Akka StreamsAsynchronous stream processing with Akka Streams
Asynchronous stream processing with Akka Streams
 
Introduction to Progressive Web Apps (PWA)
Introduction to Progressive Web Apps (PWA)Introduction to Progressive Web Apps (PWA)
Introduction to Progressive Web Apps (PWA)
 
Front end development
Front end developmentFront end development
Front end development
 
GraphQL Introduction with Spring Boot
GraphQL Introduction with Spring BootGraphQL Introduction with Spring Boot
GraphQL Introduction with Spring Boot
 
Power BI Reporting & Project Online
Power BI Reporting & Project OnlinePower BI Reporting & Project Online
Power BI Reporting & Project Online
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...
Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...
Power BI Governance and Development Best Practices - Presentation at #MSBIFI ...
 
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache KafkaReal-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
 
Graphql Overview By Chirag Dodia
Graphql Overview By Chirag DodiaGraphql Overview By Chirag Dodia
Graphql Overview By Chirag Dodia
 

Similar to Kafka Connect: Operational Lessons Learned from the Trenches (Elizabeth Bennett, Confluent) Kafka Summit SF 2019

Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKevin Lynch
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kevin Lynch
 
Distributed real time stream processing- why and how
Distributed real time stream processing- why and howDistributed real time stream processing- why and how
Distributed real time stream processing- why and howPetr Zapletal
 
Netflix Container Scheduling and Execution - QCon New York 2016
Netflix Container Scheduling and Execution - QCon New York 2016Netflix Container Scheduling and Execution - QCon New York 2016
Netflix Container Scheduling and Execution - QCon New York 2016aspyker
 
Scheduling a fuller house - Talk at QCon NY 2016
Scheduling a fuller house - Talk at QCon NY 2016Scheduling a fuller house - Talk at QCon NY 2016
Scheduling a fuller house - Talk at QCon NY 2016Sharma Podila
 
Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018
Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018
Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018Codemotion
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...HostedbyConfluent
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingBravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingYaroslav Tkachenko
 
Event driven architectures with Kinesis
Event driven architectures with KinesisEvent driven architectures with Kinesis
Event driven architectures with KinesisMark Harrison
 
Building real time Data Pipeline using Spark Streaming
Building real time Data Pipeline using Spark StreamingBuilding real time Data Pipeline using Spark Streaming
Building real time Data Pipeline using Spark Streamingdatamantra
 
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19Sujit Pal
 
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at NightHow Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at NightScyllaDB
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixC4Media
 
OpenLineage for Stream Processing | Kafka Summit London
OpenLineage for Stream Processing | Kafka Summit LondonOpenLineage for Stream Processing | Kafka Summit London
OpenLineage for Stream Processing | Kafka Summit LondonHostedbyConfluent
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1Ruslan Meshenberg
 
Wattpad - Spark Stories
Wattpad - Spark StoriesWattpad - Spark Stories
Wattpad - Spark StoriesRylan Halteman
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafkaSamuel Kerrien
 
[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...
[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...
[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...Anna Ossowski
 
Machine learning at Scale with Apache Spark
Machine learning at Scale with Apache SparkMachine learning at Scale with Apache Spark
Machine learning at Scale with Apache SparkMartin Zapletal
 

Similar to Kafka Connect: Operational Lessons Learned from the Trenches (Elizabeth Bennett, Confluent) Kafka Summit SF 2019 (20)

Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
 
Distributed real time stream processing- why and how
Distributed real time stream processing- why and howDistributed real time stream processing- why and how
Distributed real time stream processing- why and how
 
Netflix Container Scheduling and Execution - QCon New York 2016
Netflix Container Scheduling and Execution - QCon New York 2016Netflix Container Scheduling and Execution - QCon New York 2016
Netflix Container Scheduling and Execution - QCon New York 2016
 
Scheduling a fuller house - Talk at QCon NY 2016
Scheduling a fuller house - Talk at QCon NY 2016Scheduling a fuller house - Talk at QCon NY 2016
Scheduling a fuller house - Talk at QCon NY 2016
 
Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018
Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018
Managing your Black Friday Logs - Antonio Bonuccelli - Codemotion Rome 2018
 
Intro to HPC
Intro to HPCIntro to HPC
Intro to HPC
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingBravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
 
Event driven architectures with Kinesis
Event driven architectures with KinesisEvent driven architectures with Kinesis
Event driven architectures with Kinesis
 
Building real time Data Pipeline using Spark Streaming
Building real time Data Pipeline using Spark StreamingBuilding real time Data Pipeline using Spark Streaming
Building real time Data Pipeline using Spark Streaming
 
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
 
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at NightHow Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
How Opera Syncs Tens of Millions of Browsers and Sleeps Well at Night
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFix
 
OpenLineage for Stream Processing | Kafka Summit London
OpenLineage for Stream Processing | Kafka Summit LondonOpenLineage for Stream Processing | Kafka Summit London
OpenLineage for Stream Processing | Kafka Summit London
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
 
Wattpad - Spark Stories
Wattpad - Spark StoriesWattpad - Spark Stories
Wattpad - Spark Stories
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
 
[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...
[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...
[Virtual Meetup] Using Elasticsearch as a Time-Series Database in the Endpoin...
 
Machine learning at Scale with Apache Spark
Machine learning at Scale with Apache SparkMachine learning at Scale with Apache Spark
Machine learning at Scale with Apache Spark
 

More from confluent

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsconfluent
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flinkconfluent
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...confluent
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluentconfluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkconfluent
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloudconfluent
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Diveconfluent
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluentconfluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Meshconfluent
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservicesconfluent
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3confluent
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernizationconfluent
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataconfluent
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2confluent
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023confluent
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesisconfluent
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023confluent
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streamsconfluent
 

More from confluent (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flink
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Mesh
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservices
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernization
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time data
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesis
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streams
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
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
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Recently uploaded (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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)
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Kafka Connect: Operational Lessons Learned from the Trenches (Elizabeth Bennett, Confluent) Kafka Summit SF 2019

  • 1. Kafka Connect Operational Lessons Learned From the Trenches Liz Bennett Software Engineer, Confluent
  • 2. About Me Liz Bennett Currently @ As of last week! 😄 Formerly @ Formerly @ Formerly @ 2
  • 3. Get ready for a potpourri of Kafka Connect operational advice, lessons learned, and random information! 3
  • 4. We’ll cover... ● Kafka Connect deployment and use cases ● Useful operational tools ● End-to-End monitoring ● Lessons learned from outages 4
  • 6. The Cluster ● Distributed Kafka Connect Cluster ● Self-service for Data Scientists ● ~50 workers ● ~500 connectors ● ~1000 tasks ● Low/medium Kafka volume ● 6 different connectors installed ○ RabbitMQ Source & Sink, Elasticsearch Sink, S3 Sink, SQS Source, Feature Store Sink ● All data is json formatted 6
  • 7. 7
  • 8. Read my blog post to learn more! Putting the Power of Apache Kafka into the Hands of Data Scientists 8
  • 9. Useful Operational Utilities Jobs, Metrics, Alerts, Dashboards, Services, Transforms
  • 11. Jobs ● Restart crashed connectors 🎬 ○ Post to slack, include crash reason ● Verify resources in external systems 🕵 ● Health checks 😷 ● Autoscale # of tasks ⚖ ● Backup connect-configs topic 💾 ○ Store in Github to easily review history ● Expire Elasticsearch indices ☠ ● CI/CD jobs to build custom connectors 🚢 11
  • 13. Dashboards & Metrics ● Kafka Connect heap usage dashboard and alerts ● Kafka consumer lags dashboard and alerts ● ❗Very Important❗: per topic messages/sec❗AND❗ bytes/sec ○ For debugging, alerting and auto-scaling ● # of tasks ● # of connectors ● # of open resources (e.g. TCP connections) 13
  • 15. Single Message Transforms Standard Transforms ● TimestampRouter ○ Used in Elasticsearch connectors Custom Transforms ● RegexFieldFilter ○ Filter out messages by matching Regex to Json path ○ Skip corrupt data ● DropField ○ Delete fields, e.g. PII ○ Make Elasticsearch happy 15
  • 18. Admin Service ● Wraps Kafka Connect API 🎁 ● Manages resources in external data systems 👉 ○ Create tables in the Hive Metastore ○ Configure alerts ○ Create/dete topics ○ TODO: create index patterns in Kibana ● Sample topics in Kafka 🔬 18
  • 19. Example: Kafka Connect S3 API { "connector.class": "io.confluent.connect.s3.S3SinkConnector", "s3.region": "us-east-1","topics.dir": "dw","flush.size": "100","tasks.max": "1", "timezone": "UTC","sf.s3.borderland.api.config": "foo.com”,"sf.metadata.owner.team": ":team:infra", "transforms": "EventNameRegexFilter","sf.s3.hinterland.api.config": "foo.com, "transforms.EventNameRegexFilter.field.path": "$.event_name","locale": "en","sf.s3.formatter.table.has.writets": "true", "sf.s3.partitioner.db.name": "db_name", "format.class": "com.stitchfix.datahighway.sfs3connector.SFS3FormatDailyPartitions", "schema.generator.class": "io.confluent.connect.storage.hive.schema.TimeBasedSchemaGenerator","sf.s3.formatter.event.name.regex.match.list": "^.*$", "sf.s3.formatter.payload.field": "$.payload", "sf.s3.formatter.field.timestamp.transformers.map": "{"$.metadata.timestamp":"yyyy-MM-dd HH:mm:ss.SSSSSS","$.payload.ts_posted":"yyyy-MM-dd HH:mm:ss.SSSSSS"}", "s3.bucket.name": "stitchfix.aa.event","partition.duration.ms": "3600000","sf.s3.formatter.timestamp.field": "$.metadata.timestamp", "topics": "my_topic","sf.s3.partitioner.table.name": "my_table_in_s3","sf.s3.formatter.s3.timestamps.format": "yyyy-MM-dd HH:mm:ss.SSS000", "transforms.EventNameRegexFilter.regex": "^.*$","partitioner.class": "com.stitchfix.datahighway.sfs3connector.SFS3PartitionerDailyPartitions", "name": "my-s3-connector","sf.metadata.owner.email": "foo.bar@stitchfix.com", "storage.class": "io.confluent.connect.s3.storage.S3Storage","rotate.schedule.interval.ms": "30000", "path.format": "'year'=YYYY/'month'=MM/'day'=dd/'hour'=HH","transforms.EventNameRegexFilter.type": "com.stitchfix.datahighway.transforms.FieldRegexFilter", "schemas.enable": "false","sf.s3.formatter.event.name.field": "$.event_name" } 19
  • 20. Example: Wrapped API { "processing_threads": 1, "name": "my-s3-connector", "topics": ["my_topic"], "table_name": "my_table_in_s3", "flush_size": 100, "flush_interval_seconds": 30, "owner_email": "bob.ross@happytrees.com", "owner_team": ":team:painters" } 20
  • 21. API Wrapper ● Hard codes default values ○ AWS defaults ○ Schema related defaults ○ Security related defaults ○ Kafka hostnames ○ Kafka Connect class name configurations ● Injects custom fields ○ Connector owner metadata 21
  • 22. API Wrapper Design Requirements ● Adding new connectors should be very easy ● Adding new fields to connectors should very easy ● Typos should be hard to make, ideally statically enforced by compiler Design ● Redesigned 3 times ● Used Jackson Json Annotations for Json SerDe ● Very hierarchical OOP design ● Lots of tests... 22
  • 23. API Wrapper Lessons Learned Pros 👍 ● Greatly simplified the web UI React code ● Exposed simple API for other teams to script against ● Consolidated default configs in one place ● Totally abstracts Kafka Connect Cons 👎 ● Friction when installing new connectors 23
  • 25. End-to-End Monitoring Requirements ● Monitor for ○ Delayed data ○ Duplicated data ○ Previously delivered data has disappeared ○ “Late arriving” data is not correctly delivered ○ Failures to publish data ● All ingresses and egresses are monitored 24/7 ● Use user-level interfaces only ● ❗Very important❗: staging must have all the same monitoring as prod!! 25
  • 27. Tracer Bullets Overview ● Send synthetic events (“tracer bullets”) to all ingress points ● Funnel all tracer bullets into tracer_bullet topic ● Create at least 1 of every kind of Sink Connector consuming from the tracer_bullet topic ● Create tracer bullets with logical timestamps ● Send current and “late arriving” data ● Persist metadata for tracer bullets in external system (i.e. Elasticsearch) 27
  • 28. 28
  • 29. 29
  • 30. 30
  • 31. 31
  • 32. 32
  • 33. Tracer Bullet Payloads Must include at least ● Unique id ● ❗Very important❗ LOGICAL timestamp (a.k.a event time) 33
  • 34. Tracer Bullets Metadata Tracer bullet metadata should include ● Timestamp sent ● Tracer bullet’s unique ID ● Ingress point ● Expected egress points ● Send status (SUCCESS, SEND_FAILED, etc.) ● # of duplicates found in sink ● Delivery timestamp (if delivered) ● Environment (dev/staging/prod) 34
  • 35. Tracer Bullet Polling ● Continuously queries every destination ○ Queries a sliding window of several hours ○ Queries the “late arriving” tracer bullets ● Check for duplicates ● Updates metadata when tracer bullets are delivered (or disappear!) 35
  • 36. Tracer Bullet Alerting ● Poll the tracer bullet metadata and alert when: ○ Duplicates were found ○ Tracer bullets are delayed (according to your SLAs) ○ Previously delivered tracer bullets mysteriously disappear ○ Tracer bullets failed to send in the first place ● Alert if there is no tracer bullet metadata 36
  • 38. Tracer Bullet Summary Job ❗Very Important❗ ● Generate daily reports ○ Overall end-to-end latency ○ No. of tracer bullets sent per sink/source ● Indicates tracer bullets are functioning properly 38
  • 39. Tracer Bullets Lessons Learned ● Make them extensible! ● Tracer bullets: just a big streaming application… write good tests! ● Dev environments are hard… ● Tracer bullets allowed for fewer integration tests 39
  • 40. Lessons Learned the Hard Way Production Issues, Annoying Gotchas
  • 41. Pausing Connectors ● PUT /connectors/my-connector/pause ● What does pausing connectors actually do? ○ Pauses poll loop ● How to really stop a connector? ○ Delete and recreate ○ Shut down Kafka Connect 41
  • 42. Jar Hell [2018-02-18 10:28:33,290] INFO Loading plugin from: /home/ubuntu/kafka_2.11-1.0.0/plugins/lib (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:179) Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator; at org.reflections.Reflections.expandSuperTypes(Reflections.java:380) at org.reflections.Reflections.<init>(Reflections.java:126) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:258) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:201) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:193) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:153) at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:47) at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:70)f 42
  • 43. Jar Hell [2018-02-18 10:28:33,290] INFO Loading plugin from: /home/ubuntu/kafka_2.11-1.0.0/plugins/lib (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:179) Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator; at org.reflections.Reflections.expandSuperTypes(Reflections.java:380) at org.reflections.Reflections.<init>(Reflections.java:126) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:258) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:201) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:193) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:153) at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:47) at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:70)f 43
  • 44. Jar Hell ● As of version 0.11.0.0 (CP 3.3.0), Kafka Connect has plugin.path ● USE PLUGIN.PATH!!!! 44
  • 45. Schemas ● Migrating to schemas is really tough ● Use schemas from the beginning ● Some connectors require schemas ○ JDBC Sink Connector 45
  • 46. Rebalancing What is it ● Created/deleted connectors & added/removed workers trigger rebalances Why is it bad ● API becomes unresponsive (responds with 409 status) ● Thundering rebalances caused instability in Elasticsearch ● S3 Connector + RegexFieldFilter transform caused big problems ● As of 2.3.0 (CP 5.3.0) rebalancing is much better!!! Upgrade, upgrade upgrade! ○ Shout out to Konstantine Karantasis for Cooperative Incremental Rebalances 46
  • 48. Conclusion ● Kafka Connect is awesome! 😄😄😄 ● Metrics 📈 ○ ❗Very Important❗: per topic message/sec❗AND❗ bytes/sec ● Write an admin service to tie together your whole system 🎁 ● End-to-end monitoring 🔥🔥🔥 ○ ❗Very Important❗: have monitoring in both prod and staging ○ ❗Very Important❗: generate daily summary reports ○ ❗Very Important❗: universal support for logical timestamps ● Upgrade early and upgrade often! 💯 48