Flink/Spark on K8s 实战

本文深入探讨了Flink和Spark在Kubernetes(K8s)上的原生支持,涵盖从提交作业到资源管理的全过程。文章详细介绍了Spark和Flink在K8s上的部署模式,如Spark的cluster和client模式,以及Flink的Standalone和原生模式。内容包括作业提交、资源清理、Pod模板、RBAC权限管理等,并分析了两种框架在K8s上的实现细节和trouble-shooting策略,如日志收集和监控方案。此外,文章还讨论了K8s实现的不足之处,如Spark的Pod容错性和Flink的Deployment语义问题。
摘要由CSDN通过智能技术生成

一、Native 简介

现在,Docker、Kubernetes等容器技术已发展为一项通用技术。

Kubernetes 的核心难点无外乎这几个方面:

  • 容器内抓包定位网络问题
  • 容器进程主动退出、只能运行一个参数
  • JVM 参数在容器中突然失效

说白了, Kubernetes 的核心理念并不复杂,但涉及的维度的确很多。比如,微服务架构理念、分布式原理、网络、存储等各个层级的知识体系都会覆盖,非运维出身理解起来会比较困难。

以 Flink 和 Spark 为代表的分布式流批计算框架的下层资源管理平台逐渐从 Hadoop 生态的 YARN 转向 Kubernetes生态的K8s原生scheduler以及周边资源调度器,比如 Volcano 和 Yunikorn 等。

这篇文章简单比较一下两种计算框架在 Native Kubernetes 的支持和实现上的异同,以及对于应用到生产环境我们还需要做些什么。

这里的 native 其实就是计算框架直接向 Kubernetes 申请资源。比如很多跑在 YARN 上面的计算框架,需要自己实现一个 AppMaster 来想 YARN 的 ResourceManager 来申请资源。Native K8s 相当于计算框架自己实现一个类似 AppMaster 的角色向 k8s 去申请资源,当然和 AppMaster 还是有差异的 (AppMaster 需要按 YARN 的标准进行实现)。

二、Sp

***s 上的部署方式有两种:Standalone 方式和 Native 方式。 1. Standalone 方式 Standalone 方式是 FlinkK8s 上最简单的部署方式,不需要对 Flink 做任何改动,同时 FlinkK8s 集群是无感知的,通过外部手段即可让 Flink 运行起来。具体操作可以参考 Standalone Session On K8s。 2. Native 方式 Native 方式是相对于 Flink 而言的,它可以借助 Flink 的命令就可以达到自治的一个状态,不需要引入外部工具就可以通过 Flink 完成任务在 K8s 上的运行。具体操作如下: - 资源申请方式:Flink 的 Client 内置了一个 K8s Client,可以借助 K8s Client 去创建 JobManager,当 Job 提交之后,如果对资源有需求,JobManager 会向 Flink 自己的 ResourceManager 去申请资源。这个时候 Flink 的 ResourceManager 会直接跟 K8s 的 API Server 通信,将这些请求资源直接下发给 K8s Cluster,告诉它需要多少个 TaskManger,每个 TaskManager 多大。当任务运行完之后,它也会告诉 K8s Cluster 释放没有使用的资源。 - 具体操作:可以使用 Flink 提供的 kubernetes-session.sh 脚本来启动一个 Flink Session Cluster。例如: ```shell ./bin/kubernetes-session.sh \ -Dkubernetes.cluster-id=my-first-flink-cluster \ -Dkubernetes.container.image=flink:1.11.2 \ -Dkubernetes.jobmanager.cpu=1 \ -Dkubernetes.taskmanager.cpu=1 \ -Dkubernetes.rest-service.exposed.type=NodePort \ start ``` 以上命令会启动一个名为 my-first-flink-cluster 的 Flink Session Cluster,使用的镜像为 flink:1.11.2,JobManager 和 TaskManager 的 CPU 都为 1,同时将 Flink 的 REST API 暴露在 NodePort 上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wespten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值