SlideShare a Scribd company logo
1 of 54
Patrick Lucas
patrick@data-artisans.com
@theplucas
Flink in Containerland
Deploying Apache Flink on Kubernetes
What’s this talk about?
Lessons learned based on…
▪ getting a Flink cluster working in Docker
▪ creating the Flink image for Docker Hub
▪ deploying Flink on Kubernetes (K8s)
▪ tying it all together for dA Platform 2
2
Why containerized Flink?
▪ Fits our ideal deployment model (more
about this later)
▪ Efficient dynamic resource allocation and
scaling
▪ Application-oriented instead of machine-
oriented philosophy
3
Why Kubernetes?
▪ Principled API design
▪ Resource-oriented
▪ Disciplined about the layer of infrastructure
it occupies
▪ Provides all the necessary parts to effectively
run containerized applications at scale
4
Agenda
▪ Part 1: Setting the Stage
▪ Background of Flink and Kubernetes
▪ Part 2: Challenges and Solutions
▪ Discussion of and solutions for various challenges
with containerized Flink
▪ Part 3: Conclusion
▪ Part 4: Q&A
5
Part 1 — Setting the Stage
6
Agenda (Part 1)
▪ Introduction
▪ Recap of Flink architecture
▪ One job per cluster
▪ Kubernetes intro and terminology
▪ Flink-on-K8s example
7
Recap of Flink architecture
▪ 1 active JobManager (JM)
▪ central coordinator for cluster/jobs
▪ orchestrates task distribution and
checkpointing
▪ serves UI and HTTP API
8
Recap of Flink architecture
▪ 1 or more TaskManagers (TM)
▪ execute user code
▪ configured with address of JM
9
Recap of Flink architecture
10
JM
JM (spare)
ZooKeeper
TM
TM
TM
TM
TM
TM
TM
TM
TM
Coordination and
task distribution
leader election/
metadata
data flows
within job
Sources
and sinks
State
storage for
checkpoints and
savepoints
Agenda (Part 1)
▪ Introduction
▪ Recap of Flink architecture
▪ One job per cluster
▪ Kubernetes intro and terminology
▪ Flink-on-K8s example
11
One job per cluster
▪ Evolving job deployment philosophy
▪ Tie cluster lifecycle to job lifecycle
▪ Ideally, the job is first-class
▪ think about running a job on a platform
like Kubernetes, not a running Flink
cluster first then submitting the job
12
One job per cluster
▪ Early versions of Flink heavily inspired by
Hadoop
▪ have a cluster comprised of nodes
having different roles (JM, TMs)
▪ FLIP-6, ongoing project to improve and
modernize this aspect of Flink
13
Agenda (Part 1)
▪ Introduction
▪ Recap of Flink architecture
▪ One job per cluster
▪ Kubernetes intro and terminology
▪ Flink-on-K8s example
14
Kubernetes intro and terminology
▪ Resource-oriented with declarative configuration
▪ Tell K8s about what should exist, and a background
process asynchronously makes it happen
▪ “3 replicas of this container should be kept running,
only on nodes with this label”
▪ “a load balancer should exist, listening on port 443,
backed by containers with this label”
15
Kubernetes intro and terminology
▪ Various kinds of resources, very extensible (add your own
resources and “controllers” that handle them)
▪ Some core types:
▪ Pod (one or more containers running on a node)
▪ Deployment (keep 0 or more pods running, specified by a
template)
▪ Service (a hostname-accessible network service that listens on
one or more ports and proxies to pods that match given labels)
▪ ConfigMap (data that can be rendered as files or env vars)
16
Agenda (Part 1)
▪ Introduction
▪ Recap of Flink architecture
▪ One job per cluster
▪ Kubernetes intro and terminology
▪ Flink-on-K8s example
17
Flink-on-K8s example
▪ JobManager Deployment
▪ maintain 1 replica of Flink container running as a
JobManager
▪ apply a label like “flink-jobmanager”
▪ JobManager Service
▪ make JobManager accessible by a hostname & port
▪ select pods with label “flink-jobmanager”
18
Flink-on-K8s example
▪ TaskManager Deployment
▪ maintain n replica of Flink container
running as a TaskManager
▪ Flink config ConfigMap
▪ Materialize necessary config into files (i.e.
flink-conf.yaml; perhaps core-site.xml)
19
Simple Flink-on-Kubernetes
20
Unfortunately, no one can
be told what Kubernetes is.
You have to use it for
yourself.
“
Morpheus, The Matrix
TaskManager DeploymentJobManager
Deployment
Flink-on-K8s example
21
Kubernetes Nodes
Flink Pod (JM) Flink Pod (TM) Flink Pod (TM) Flink Pod (TM)
JobManager
Service
ConfigMap including
contents of flink-conf.yaml
mounted as volume in each
pod at /etc/flink
Service exposes predict-
able hostname and load
balances connections
across matching pods
Deployment ensures
desired # of pods remain
running and applies
upgrade strategy
Part 2 — Challenges and Solutions
22
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
23
JobManager RPC
▪ Networking is the source of most challenges with
Flink-on-Kubernetes
▪ 5 of 7 sections in Part 2 are networking-related
▪ If you run a simple deployment on Kubernetes as
I described above… it just doesn’t work (or rather
it doesn’t “just work”)
24
JobManager RPC
▪ Most visible issue: use of Akka for Flink CLI RPC (including
job submission)
▪ Akka requires that the “name” (hostname or IP) used to
address the JM matches the name the JM itself is
configured with
▪ If connecting from outside the K8s environment, such
via port-forwarding or over a load balancer, messages
are silently dropped
25
JobManager RPC
▪ JM running in pod my-flink-cluster-jobmanager-3063995c2t0
▪ JM Service my-flink-cluster-jobmanager, listening on Flink RPC,
blob server, and UI ports
▪ JM/TMs configured with jobmanager.rpc.address: my-flink-
cluster-jobmanager
▪ TMs work fine, as they talk to the JM with the same name as it sees
itself (i.e. the name of the Service)
▪ But if you forward the JM RPC port locally or access it via a proxy…
26
JobManager RPC
From my laptop, having forwarded port 6123 to a running cluster on K8s:
$ flink run -m localhost:6123 examples/batch/WordCount.jar
Cluster configuration: Standalone cluster with JobManager at localhost/127.0.0.1:6123
Using address localhost:6123 to connect to JobManager.
. . .
Submitting job with JobID: ff86d06802fc69554ee0a5f726204db5. Waiting for job
completion.
… which hangs until a timeout. In the JobManager’s log:
2017-09-08 09:42:26,082 ERROR akka.remote.EndpointWriter
[] - dropping message [class akka.actor.ActorSelectionMessage] for non-local recipient
[Actor[akka.tcp://flink@localhost:6123/]] arriving at [akka.tcp://flink@localhost:
6123] inbound addresses are [akka.tcp://flink@my-flink-cluster-jobmanager:6123]
27
JobManager RPC
▪ One solution is to submit the job from within the K8s
environment
▪ e.g. run a pod that contains your job jar, use the
Flink CLI to submit
▪ Another solution is to use the HTTP API (or the UI)
▪ Not subject to “addressability” problems
▪ Cons: hard to secure, not well specified
28
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
29
Port configuration
▪ Flink chooses arbitrary ports for some
services (i.e. blob server, queryable state)
▪ Must specify these in Flink config and
JobManager service
▪ blob.server.port: 6124
▪ query.server.port: 6125
30
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
31
“HA mode”
▪ A misnomer—always use HA mode in production,
even with 1 JobManager
▪ JM stores critical state in ZooKeeper that allows
it to recover if the JM dies
▪ On K8s and other resource managers, should only
need to run a single JobManager as the manager
will re-launch it upon failure
32
“HA mode”
▪ If you do run >1 JM, accessing the UI becomes difficult
▪ If you expose both JMs in a Service, but your request
routes to the non-leader, will be redirected to internal
hostname of leader
▪ One solution seen on the mailing list, have non-leader
fail “readiness probe”, so doesn’t receive traffic
▪ Possible improvement to Flink: proxy non-leader requests
to leader
33
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
34
Extra libraries, logging, other config
▪ For code dependencies, easiest to build a “fat jar”
that includes them
▪ Notable exceptions are state backend, logging, and
metrics dependencies, for example…
▪ S3 state storage requires extra AWS, Hadoop jars
▪ SLF4J and Graylog’s GELF appender require
additional jars
35
Extra libraries, logging, other config
▪ For these, easiest to build your own Flink image
▪ See https://github.com/docker-flink/docker-flink
to see how the public image is built
▪ Alternatively, an advanced solution is to build an
image containing your jars and use Kubernetes’
“init-containers” feature to load them in before Flink
starts
36
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
37
Queryable state
▪ Currently somewhat tricky
▪ Only works out-of-the-box if all TMs are addressable and routable
▪ For most setups, this means you must be in the same K8s
environment
▪ Also suffer from Akka addressability issue
▪ Possible improvement to Flink: enable TMs to proxy queries to the
correct TM, à la Cassandra
▪ Then, create another Service in front of all TMs listening on the
query server port
38
Queryable state
▪ A more cumbersome solution that would work today is to
create a service yourself that runs in the same K8s
environment and proxies requests
▪ This has some added advantages, such as…
▪ horizontal scalability
▪ an opportunity for caching
▪ a way to maintain partial availability while the
underlying Flink job is down, e.g. during upgrades
39
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
40
TLS/on-the-wire encryption
▪ Also a bit tricky, as Pods inherently don’t have predictable
hostnames or IPs
▪ One solution: generate a trustStore/keyStore when launching
cluster
▪ Which contain a single key pair and certificate that all JMs/TMs
in the cluster use and verify against
▪ Essentially symmetric encryption in the “convenient” wrapper
of TLS
▪ I haven’t actually tried this
41
TLS/on-the-wire encryption
▪ Another possibility: use an overlay network in
Kubernetes that magically does on-the-wire encryption
▪ Encryption supported in some fashion by some
overlay networks
▪ Whether or not this is acceptable to you depends
on your requirements
▪ I haven’t actually tried this
42
Agenda (Part 2)
▪ JobManager RPC
▪ Port configuration
▪ “HA mode”
▪ Extra libraries, logging, other config
▪ Queryable state
▪ TLS/on-the-wire encryption
▪ Resource allocation
43
Resource allocation
▪ How many slots should each TM have?
▪ >1 slot per TM can save some overhead
▪ But fewer slots/TM could theoretically reduce
time to recovery (restoring from checkpoint)
▪ But more machines means a higher chance
of some failure
44
Resource allocation
▪ How much CPU/RAM should each TM get?
▪ Ideally, each slot should have one CPU
▪ Within a slot, processing is serial, so >1
CPU/slot shouldn’t matter much
▪ RAM/slot ratio is application-dependent;
1GB is a decent minimum to start with
45
Resource allocation
▪ Check out Robert Metzger’s talk about Flink
operations to some deeper discussion and insight
about this
▪ Keep It Going — How to Reliably and Efficiently
Operate Apache Flink
▪ Available on the FlinkForward YouTube channel
before the end of the day
46
Part 3 — Conclusion
47
Conclusion
▪ Containerization/resource management
platforms have a bright future
▪ Flink well-positioned, but has plenty of
room for improvement
48
Conclusion
▪ My most-wanted Flink improvement vis-à-vis Flink-on-K8s
▪ Establish a specified HTTP API for all management
and monitoring functions
▪ Rewrite the CLI to use this API exclusively
▪ Provide health-check endpoints for JobManagers and
TaskManagers that can be used for Liveness/
ReadinessChecks
49
See Also
▪ FLINK-6369 - Better support for overlay networks
▪ for discussion about the networking-/overlay network-
related issues discussed in this presentation
▪ The Flink User mailing list
▪ plenty of posts about the topics I covered today
▪ FLIP-6 - Flink Deployment and Process Model
▪ ongoing work to improve how Flink interacts with
resource managers, notably Mesos and YARN
50
51
52
Thank you!
@theplucas
@ApacheFlink
@dataArtisans
We are hiring!
data-artisans.com/careers
Part 3 — Q & A
54

More Related Content

What's hot

Airflow tutorials hands_on
Airflow tutorials hands_onAirflow tutorials hands_on
Airflow tutorials hands_onpko89403
 
Running Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and PitfallsRunning Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and PitfallsDatabricks
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangDatabricks
 
The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...
The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...
The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...HostedbyConfluent
 
Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...
Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...
Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...Databricks
 
Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...
Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...
Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...confluent
 
Run Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdf
Run Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdfRun Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdf
Run Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdfAnya Bida
 
Introducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using itIntroducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using itBruno Faria
 
Reactive Programming for Real Use Cases
Reactive Programming for Real Use CasesReactive Programming for Real Use Cases
Reactive Programming for Real Use CasesAlex Soto
 
Introduction to Apache Flink - Fast and reliable big data processing
Introduction to Apache Flink - Fast and reliable big data processingIntroduction to Apache Flink - Fast and reliable big data processing
Introduction to Apache Flink - Fast and reliable big data processingTill Rohrmann
 
Evening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkEvening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkFlink Forward
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaJiangjie Qin
 
Apache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the CloudApache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the CloudDatabricks
 
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...confluent
 
Flexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache FlinkFlexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache FlinkDataWorks Summit
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentFlink Forward
 
Uber: Kafka Consumer Proxy
Uber: Kafka Consumer ProxyUber: Kafka Consumer Proxy
Uber: Kafka Consumer Proxyconfluent
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsKetan Gote
 

What's hot (20)

Airflow tutorials hands_on
Airflow tutorials hands_onAirflow tutorials hands_on
Airflow tutorials hands_on
 
Running Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and PitfallsRunning Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and Pitfalls
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
 
The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...
The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...
The Flux Capacitor of Kafka Streams and ksqlDB (Matthias J. Sax, Confluent) K...
 
Apache Airflow overview
Apache Airflow overviewApache Airflow overview
Apache Airflow overview
 
Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...
Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...
Designing ETL Pipelines with Structured Streaming and Delta Lake—How to Archi...
 
Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...
Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...
Why My Streaming Job is Slow - Profiling and Optimizing Kafka Streams Apps (L...
 
Run Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdf
Run Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdfRun Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdf
Run Apache Spark on Kubernetes in Large Scale_ Challenges and Solutions-2.pdf
 
Introducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using itIntroducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using it
 
Reactive Programming for Real Use Cases
Reactive Programming for Real Use CasesReactive Programming for Real Use Cases
Reactive Programming for Real Use Cases
 
Introduction to Apache Flink - Fast and reliable big data processing
Introduction to Apache Flink - Fast and reliable big data processingIntroduction to Apache Flink - Fast and reliable big data processing
Introduction to Apache Flink - Fast and reliable big data processing
 
Evening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkEvening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in Flink
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
Apache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the CloudApache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the Cloud
 
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
 
Flexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache FlinkFlexible and Real-Time Stream Processing with Apache Flink
Flexible and Real-Time Stream Processing with Apache Flink
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production Deployment
 
Uber: Kafka Consumer Proxy
Uber: Kafka Consumer ProxyUber: Kafka Consumer Proxy
Uber: Kafka Consumer Proxy
 
Airflow Intro-1.pdf
Airflow Intro-1.pdfAirflow Intro-1.pdf
Airflow Intro-1.pdf
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka Streams
 

Similar to Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland

Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022HostedbyConfluent
 
Docker Swarm and Traefik 2.0
Docker Swarm and Traefik 2.0Docker Swarm and Traefik 2.0
Docker Swarm and Traefik 2.0Jakub Hajek
 
14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...
14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...
14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...Athens Big Data
 
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s worldDávid Kőszeghy
 
Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...
Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...
Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...Flink Forward
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureAngelo Failla
 
Kubernetes: The Next Research Platform
Kubernetes: The Next Research PlatformKubernetes: The Next Research Platform
Kubernetes: The Next Research PlatformBob Killen
 
Transactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric LiangTransactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric LiangDatabricks
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and CaliforniumJulien Vermillard
 
ROS Course Slides Course 2.pdf
ROS Course Slides Course 2.pdfROS Course Slides Course 2.pdf
ROS Course Slides Course 2.pdfduonglacbk
 
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OSPutting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OSLightbend
 
6 open capi_meetup_in_japan_final
6 open capi_meetup_in_japan_final6 open capi_meetup_in_japan_final
6 open capi_meetup_in_japan_finalYutaka Kawai
 
A day in the life of a log message
A day in the life of a log messageA day in the life of a log message
A day in the life of a log messageJosef Karásek
 
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander KukushkinPGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander KukushkinEqunix Business Solutions
 
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLinaro
 
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang WangVirtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang WangFlink Forward
 
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...Chris Fregly
 
Rook - cloud-native storage
Rook - cloud-native storageRook - cloud-native storage
Rook - cloud-native storageKarol Chrapek
 
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...Frank Munz
 
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
 

Similar to Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland (20)

Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
 
Docker Swarm and Traefik 2.0
Docker Swarm and Traefik 2.0Docker Swarm and Traefik 2.0
Docker Swarm and Traefik 2.0
 
14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...
14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...
14th Athens Big Data Meetup - Landoop Workshop - Apache Kafka Entering The St...
 
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
 
Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...
Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...
Flink Forward SF 2017: Stephan Ewen - Experiences running Flink at Very Large...
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
 
Kubernetes: The Next Research Platform
Kubernetes: The Next Research PlatformKubernetes: The Next Research Platform
Kubernetes: The Next Research Platform
 
Transactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric LiangTransactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric Liang
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
 
ROS Course Slides Course 2.pdf
ROS Course Slides Course 2.pdfROS Course Slides Course 2.pdf
ROS Course Slides Course 2.pdf
 
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OSPutting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
Putting Kafka In Jail – Best Practices To Run Kafka On Kubernetes & DC/OS
 
6 open capi_meetup_in_japan_final
6 open capi_meetup_in_japan_final6 open capi_meetup_in_japan_final
6 open capi_meetup_in_japan_final
 
A day in the life of a log message
A day in the life of a log messageA day in the life of a log message
A day in the life of a log message
 
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander KukushkinPGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
 
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC session
 
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang WangVirtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
 
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
Spark on Kubernetes - Advanced Spark and Tensorflow Meetup - Jan 19 2017 - An...
 
Rook - cloud-native storage
Rook - cloud-native storageRook - cloud-native storage
Rook - cloud-native storage
 
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
 
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)
 

More from Flink Forward

Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Flink Forward
 
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...Flink Forward
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Flink Forward
 
Introducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorIntroducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorFlink Forward
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeFlink Forward
 
One sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkOne sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkFlink Forward
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxFlink Forward
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink Forward
 
Apache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraApache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraFlink Forward
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkFlink Forward
 
The Current State of Table API in 2022
The Current State of Table API in 2022The Current State of Table API in 2022
The Current State of Table API in 2022Flink Forward
 
Flink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink Forward
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsFlink Forward
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotFlink Forward
 
Processing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesProcessing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesFlink Forward
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Flink Forward
 
Batch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergBatch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergFlink Forward
 
Welcome to the Flink Community!
Welcome to the Flink Community!Welcome to the Flink Community!
Welcome to the Flink Community!Flink Forward
 
The top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scaleThe top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scaleFlink Forward
 
Using Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitUsing Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitFlink Forward
 

More from Flink Forward (20)

Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...
 
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
 
Introducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorIntroducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes Operator
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive Mode
 
One sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkOne sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async Sink
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at Pinterest
 
Apache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraApache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native Era
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in Flink
 
The Current State of Table API in 2022
The Current State of Table API in 2022The Current State of Table API in 2022
The Current State of Table API in 2022
 
Flink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink SQL on Pulsar made easy
Flink SQL on Pulsar made easy
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data Alerts
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
 
Processing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesProcessing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial Services
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...
 
Batch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergBatch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & Iceberg
 
Welcome to the Flink Community!
Welcome to the Flink Community!Welcome to the Flink Community!
Welcome to the Flink Community!
 
The top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scaleThe top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scale
 
Using Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitUsing Queryable State for Fun and Profit
Using Queryable State for Fun and Profit
 

Recently uploaded

Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...shambhavirathore45
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionfulawalesam
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service OnlineCALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Onlineanilsa9823
 
Schema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdfSchema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdfLars Albertsson
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz1
 
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...amitlee9823
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxolyaivanovalion
 
Introduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxIntroduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxfirstjob4
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130Suhani Kapoor
 
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...shivangimorya083
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfadriantubila
 
Data-Analysis for Chicago Crime Data 2023
Data-Analysis for Chicago Crime Data  2023Data-Analysis for Chicago Crime Data  2023
Data-Analysis for Chicago Crime Data 2023ymrp368
 
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
100-Concepts-of-AI by Anupama Kate .pptx
100-Concepts-of-AI by Anupama Kate .pptx100-Concepts-of-AI by Anupama Kate .pptx
100-Concepts-of-AI by Anupama Kate .pptxAnupama Kate
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...amitlee9823
 
{Pooja: 9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...
{Pooja:  9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...{Pooja:  9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...
{Pooja: 9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...Pooja Nehwal
 
Zuja dropshipping via API with DroFx.pptx
Zuja dropshipping via API with DroFx.pptxZuja dropshipping via API with DroFx.pptx
Zuja dropshipping via API with DroFx.pptxolyaivanovalion
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfMarinCaroMartnezBerg
 
Edukaciniai dropshipping via API with DroFx
Edukaciniai dropshipping via API with DroFxEdukaciniai dropshipping via API with DroFx
Edukaciniai dropshipping via API with DroFxolyaivanovalion
 

Recently uploaded (20)

Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interaction
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service OnlineCALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
 
Schema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdfSchema on read is obsolete. Welcome metaprogramming..pdf
Schema on read is obsolete. Welcome metaprogramming..pdf
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signals
 
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptx
 
Introduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxIntroduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptx
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
 
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
 
Data-Analysis for Chicago Crime Data 2023
Data-Analysis for Chicago Crime Data  2023Data-Analysis for Chicago Crime Data  2023
Data-Analysis for Chicago Crime Data 2023
 
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
 
100-Concepts-of-AI by Anupama Kate .pptx
100-Concepts-of-AI by Anupama Kate .pptx100-Concepts-of-AI by Anupama Kate .pptx
100-Concepts-of-AI by Anupama Kate .pptx
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
 
{Pooja: 9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...
{Pooja:  9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...{Pooja:  9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...
{Pooja: 9892124323 } Call Girl in Mumbai | Jas Kaur Rate 4500 Free Hotel Del...
 
Zuja dropshipping via API with DroFx.pptx
Zuja dropshipping via API with DroFx.pptxZuja dropshipping via API with DroFx.pptx
Zuja dropshipping via API with DroFx.pptx
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
 
Edukaciniai dropshipping via API with DroFx
Edukaciniai dropshipping via API with DroFxEdukaciniai dropshipping via API with DroFx
Edukaciniai dropshipping via API with DroFx
 

Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland

  • 1. Patrick Lucas patrick@data-artisans.com @theplucas Flink in Containerland Deploying Apache Flink on Kubernetes
  • 2. What’s this talk about? Lessons learned based on… ▪ getting a Flink cluster working in Docker ▪ creating the Flink image for Docker Hub ▪ deploying Flink on Kubernetes (K8s) ▪ tying it all together for dA Platform 2 2
  • 3. Why containerized Flink? ▪ Fits our ideal deployment model (more about this later) ▪ Efficient dynamic resource allocation and scaling ▪ Application-oriented instead of machine- oriented philosophy 3
  • 4. Why Kubernetes? ▪ Principled API design ▪ Resource-oriented ▪ Disciplined about the layer of infrastructure it occupies ▪ Provides all the necessary parts to effectively run containerized applications at scale 4
  • 5. Agenda ▪ Part 1: Setting the Stage ▪ Background of Flink and Kubernetes ▪ Part 2: Challenges and Solutions ▪ Discussion of and solutions for various challenges with containerized Flink ▪ Part 3: Conclusion ▪ Part 4: Q&A 5
  • 6. Part 1 — Setting the Stage 6
  • 7. Agenda (Part 1) ▪ Introduction ▪ Recap of Flink architecture ▪ One job per cluster ▪ Kubernetes intro and terminology ▪ Flink-on-K8s example 7
  • 8. Recap of Flink architecture ▪ 1 active JobManager (JM) ▪ central coordinator for cluster/jobs ▪ orchestrates task distribution and checkpointing ▪ serves UI and HTTP API 8
  • 9. Recap of Flink architecture ▪ 1 or more TaskManagers (TM) ▪ execute user code ▪ configured with address of JM 9
  • 10. Recap of Flink architecture 10 JM JM (spare) ZooKeeper TM TM TM TM TM TM TM TM TM Coordination and task distribution leader election/ metadata data flows within job Sources and sinks State storage for checkpoints and savepoints
  • 11. Agenda (Part 1) ▪ Introduction ▪ Recap of Flink architecture ▪ One job per cluster ▪ Kubernetes intro and terminology ▪ Flink-on-K8s example 11
  • 12. One job per cluster ▪ Evolving job deployment philosophy ▪ Tie cluster lifecycle to job lifecycle ▪ Ideally, the job is first-class ▪ think about running a job on a platform like Kubernetes, not a running Flink cluster first then submitting the job 12
  • 13. One job per cluster ▪ Early versions of Flink heavily inspired by Hadoop ▪ have a cluster comprised of nodes having different roles (JM, TMs) ▪ FLIP-6, ongoing project to improve and modernize this aspect of Flink 13
  • 14. Agenda (Part 1) ▪ Introduction ▪ Recap of Flink architecture ▪ One job per cluster ▪ Kubernetes intro and terminology ▪ Flink-on-K8s example 14
  • 15. Kubernetes intro and terminology ▪ Resource-oriented with declarative configuration ▪ Tell K8s about what should exist, and a background process asynchronously makes it happen ▪ “3 replicas of this container should be kept running, only on nodes with this label” ▪ “a load balancer should exist, listening on port 443, backed by containers with this label” 15
  • 16. Kubernetes intro and terminology ▪ Various kinds of resources, very extensible (add your own resources and “controllers” that handle them) ▪ Some core types: ▪ Pod (one or more containers running on a node) ▪ Deployment (keep 0 or more pods running, specified by a template) ▪ Service (a hostname-accessible network service that listens on one or more ports and proxies to pods that match given labels) ▪ ConfigMap (data that can be rendered as files or env vars) 16
  • 17. Agenda (Part 1) ▪ Introduction ▪ Recap of Flink architecture ▪ One job per cluster ▪ Kubernetes intro and terminology ▪ Flink-on-K8s example 17
  • 18. Flink-on-K8s example ▪ JobManager Deployment ▪ maintain 1 replica of Flink container running as a JobManager ▪ apply a label like “flink-jobmanager” ▪ JobManager Service ▪ make JobManager accessible by a hostname & port ▪ select pods with label “flink-jobmanager” 18
  • 19. Flink-on-K8s example ▪ TaskManager Deployment ▪ maintain n replica of Flink container running as a TaskManager ▪ Flink config ConfigMap ▪ Materialize necessary config into files (i.e. flink-conf.yaml; perhaps core-site.xml) 19
  • 20. Simple Flink-on-Kubernetes 20 Unfortunately, no one can be told what Kubernetes is. You have to use it for yourself. “ Morpheus, The Matrix
  • 21. TaskManager DeploymentJobManager Deployment Flink-on-K8s example 21 Kubernetes Nodes Flink Pod (JM) Flink Pod (TM) Flink Pod (TM) Flink Pod (TM) JobManager Service ConfigMap including contents of flink-conf.yaml mounted as volume in each pod at /etc/flink Service exposes predict- able hostname and load balances connections across matching pods Deployment ensures desired # of pods remain running and applies upgrade strategy
  • 22. Part 2 — Challenges and Solutions 22
  • 23. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 23
  • 24. JobManager RPC ▪ Networking is the source of most challenges with Flink-on-Kubernetes ▪ 5 of 7 sections in Part 2 are networking-related ▪ If you run a simple deployment on Kubernetes as I described above… it just doesn’t work (or rather it doesn’t “just work”) 24
  • 25. JobManager RPC ▪ Most visible issue: use of Akka for Flink CLI RPC (including job submission) ▪ Akka requires that the “name” (hostname or IP) used to address the JM matches the name the JM itself is configured with ▪ If connecting from outside the K8s environment, such via port-forwarding or over a load balancer, messages are silently dropped 25
  • 26. JobManager RPC ▪ JM running in pod my-flink-cluster-jobmanager-3063995c2t0 ▪ JM Service my-flink-cluster-jobmanager, listening on Flink RPC, blob server, and UI ports ▪ JM/TMs configured with jobmanager.rpc.address: my-flink- cluster-jobmanager ▪ TMs work fine, as they talk to the JM with the same name as it sees itself (i.e. the name of the Service) ▪ But if you forward the JM RPC port locally or access it via a proxy… 26
  • 27. JobManager RPC From my laptop, having forwarded port 6123 to a running cluster on K8s: $ flink run -m localhost:6123 examples/batch/WordCount.jar Cluster configuration: Standalone cluster with JobManager at localhost/127.0.0.1:6123 Using address localhost:6123 to connect to JobManager. . . . Submitting job with JobID: ff86d06802fc69554ee0a5f726204db5. Waiting for job completion. … which hangs until a timeout. In the JobManager’s log: 2017-09-08 09:42:26,082 ERROR akka.remote.EndpointWriter [] - dropping message [class akka.actor.ActorSelectionMessage] for non-local recipient [Actor[akka.tcp://flink@localhost:6123/]] arriving at [akka.tcp://flink@localhost: 6123] inbound addresses are [akka.tcp://flink@my-flink-cluster-jobmanager:6123] 27
  • 28. JobManager RPC ▪ One solution is to submit the job from within the K8s environment ▪ e.g. run a pod that contains your job jar, use the Flink CLI to submit ▪ Another solution is to use the HTTP API (or the UI) ▪ Not subject to “addressability” problems ▪ Cons: hard to secure, not well specified 28
  • 29. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 29
  • 30. Port configuration ▪ Flink chooses arbitrary ports for some services (i.e. blob server, queryable state) ▪ Must specify these in Flink config and JobManager service ▪ blob.server.port: 6124 ▪ query.server.port: 6125 30
  • 31. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 31
  • 32. “HA mode” ▪ A misnomer—always use HA mode in production, even with 1 JobManager ▪ JM stores critical state in ZooKeeper that allows it to recover if the JM dies ▪ On K8s and other resource managers, should only need to run a single JobManager as the manager will re-launch it upon failure 32
  • 33. “HA mode” ▪ If you do run >1 JM, accessing the UI becomes difficult ▪ If you expose both JMs in a Service, but your request routes to the non-leader, will be redirected to internal hostname of leader ▪ One solution seen on the mailing list, have non-leader fail “readiness probe”, so doesn’t receive traffic ▪ Possible improvement to Flink: proxy non-leader requests to leader 33
  • 34. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 34
  • 35. Extra libraries, logging, other config ▪ For code dependencies, easiest to build a “fat jar” that includes them ▪ Notable exceptions are state backend, logging, and metrics dependencies, for example… ▪ S3 state storage requires extra AWS, Hadoop jars ▪ SLF4J and Graylog’s GELF appender require additional jars 35
  • 36. Extra libraries, logging, other config ▪ For these, easiest to build your own Flink image ▪ See https://github.com/docker-flink/docker-flink to see how the public image is built ▪ Alternatively, an advanced solution is to build an image containing your jars and use Kubernetes’ “init-containers” feature to load them in before Flink starts 36
  • 37. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 37
  • 38. Queryable state ▪ Currently somewhat tricky ▪ Only works out-of-the-box if all TMs are addressable and routable ▪ For most setups, this means you must be in the same K8s environment ▪ Also suffer from Akka addressability issue ▪ Possible improvement to Flink: enable TMs to proxy queries to the correct TM, à la Cassandra ▪ Then, create another Service in front of all TMs listening on the query server port 38
  • 39. Queryable state ▪ A more cumbersome solution that would work today is to create a service yourself that runs in the same K8s environment and proxies requests ▪ This has some added advantages, such as… ▪ horizontal scalability ▪ an opportunity for caching ▪ a way to maintain partial availability while the underlying Flink job is down, e.g. during upgrades 39
  • 40. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 40
  • 41. TLS/on-the-wire encryption ▪ Also a bit tricky, as Pods inherently don’t have predictable hostnames or IPs ▪ One solution: generate a trustStore/keyStore when launching cluster ▪ Which contain a single key pair and certificate that all JMs/TMs in the cluster use and verify against ▪ Essentially symmetric encryption in the “convenient” wrapper of TLS ▪ I haven’t actually tried this 41
  • 42. TLS/on-the-wire encryption ▪ Another possibility: use an overlay network in Kubernetes that magically does on-the-wire encryption ▪ Encryption supported in some fashion by some overlay networks ▪ Whether or not this is acceptable to you depends on your requirements ▪ I haven’t actually tried this 42
  • 43. Agenda (Part 2) ▪ JobManager RPC ▪ Port configuration ▪ “HA mode” ▪ Extra libraries, logging, other config ▪ Queryable state ▪ TLS/on-the-wire encryption ▪ Resource allocation 43
  • 44. Resource allocation ▪ How many slots should each TM have? ▪ >1 slot per TM can save some overhead ▪ But fewer slots/TM could theoretically reduce time to recovery (restoring from checkpoint) ▪ But more machines means a higher chance of some failure 44
  • 45. Resource allocation ▪ How much CPU/RAM should each TM get? ▪ Ideally, each slot should have one CPU ▪ Within a slot, processing is serial, so >1 CPU/slot shouldn’t matter much ▪ RAM/slot ratio is application-dependent; 1GB is a decent minimum to start with 45
  • 46. Resource allocation ▪ Check out Robert Metzger’s talk about Flink operations to some deeper discussion and insight about this ▪ Keep It Going — How to Reliably and Efficiently Operate Apache Flink ▪ Available on the FlinkForward YouTube channel before the end of the day 46
  • 47. Part 3 — Conclusion 47
  • 48. Conclusion ▪ Containerization/resource management platforms have a bright future ▪ Flink well-positioned, but has plenty of room for improvement 48
  • 49. Conclusion ▪ My most-wanted Flink improvement vis-à-vis Flink-on-K8s ▪ Establish a specified HTTP API for all management and monitoring functions ▪ Rewrite the CLI to use this API exclusively ▪ Provide health-check endpoints for JobManagers and TaskManagers that can be used for Liveness/ ReadinessChecks 49
  • 50. See Also ▪ FLINK-6369 - Better support for overlay networks ▪ for discussion about the networking-/overlay network- related issues discussed in this presentation ▪ The Flink User mailing list ▪ plenty of posts about the topics I covered today ▪ FLIP-6 - Flink Deployment and Process Model ▪ ongoing work to improve how Flink interacts with resource managers, notably Mesos and YARN 50
  • 51. 51
  • 54. Part 3 — Q & A 54