标签归档:Kubernetes

Flink 1.10 Native Kubernetes 原理与实践

千呼万唤始出来,在 Kubernetes 如火如荼的今天,Flink 社区终于在 1.10 版本提供了对 Kubernetes 的原生支持,也就是 Native Kubernetes Integration。不过还只是Beta版本,预计会在 1.11 版本里面提供完整的支持。

我们知道,在 Flink 1.9 以及之前的版本里面,如果要在 Kubernetes 上运行 Flink 任务是需要事先指定好需要的 TaskManager(TM) 的个数以及CPU和内存的。这样的问题是:大多数情况下,你在任务启动前根本无法精确的预估这个任务需要多少个TM。如果指定的TM多了,会导致资源浪费;如果指定的TM个数少了,会导致任务调度不起来。本质原因是在 Kubernetes 上运行的 Flink 任务并没有直接向 Kubernetes 集群去申请资源。

Flink 在 1.10 版本完成了Active Kubernetes Integration的第一阶段,支持了 session clusters。后续的第二阶段会提供更完整的支持,如支持 per-job 任务提交,以及基于原生 Kubernetes API 的高可用,支持更多的 Kubernetes 参数如 toleration, label 和 … --> 阅读全文

Flink on Yarn / Kubernetes 原理剖析及实践

本文是我参加 Apache Flink China 社区钉钉群直播的教程(进阶篇 2.4)。我稍作调整后发在个人网站(zhoukaibo.com)上。

文中首先对 Flink 架构进行了概述;其次介绍了Yarn在Flink应用中的原理及实践;再次介绍了Kubernetes在Flink应用中的原理及实践;最后对Flink on Yarn/Kubernetes中存在的一些问题进行了解析。

Flink 架构概览

Flink架构概览–Job

用户通过 DataStream API、DataSet API、SQL 和 Table API 编写 Flink 任务,它会生成一个JobGraph。JobGraph 是由 source、map()、keyBy()/window()/apply() 和 Sink 等算子组成的。当 JobGraph 提交给 Flink 集群后,能够以 Local、Standalone、YarnKubernetes 四种模式运行。

Flink架构概览–JobManager

JobManager的功能主要有:

  • 将 JobGraph 转换成 Execution Graph,最终将 Execution
--> 阅读全文