前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flink on Yarn和k8s

Flink on Yarn和k8s

作者头像
awwewwbbb
发布2022-05-29 10:46:47
1.5K0
发布2022-05-29 10:46:47
举报
文章被收录于专栏:chaplinthink的专栏

Yarn 架构

下图为作业提交到yarn的交互流程:

XK6pd0.md.png
XK6pd0.md.png

组件列表

  • ResourceManager (RM):ResourceManager (RM) 负责处理客户端请求、启动 / 监控 ApplicationMaster、监控 NodeManager、资源的分配与调度,包含 Scheduler 和 Applications Manager
  • ApplicationMaster (AM):ApplicationMaster (AM)运行在 Slave 上,负责数据切分、申请资源和分配、任务监控和容错
  • NodeManager (NM):NodeManager (NM)运行在 Slave 上,用于单节点资源管理、AM/RM通信以及汇报状态
  • Container:Container 负责对资源进行抽象,包括内存、CPU、磁盘,网络等资源

PerJob与Session对比

Flink作业提交到yarn有两种模式:

  1. perJob
  2. session
XK6ZLR.png
XK6ZLR.png

两者区别图

XK6MFK.md.png
XK6MFK.md.png

Flink perjob 提交流程

XK63Se.md.png
XK63Se.md.png

Flink on yarn session 提交流程

Session 模式和 Per Job 模式的应用场景不一样。Per Job 模式比较适合那种对启动时间不敏感,运行时间较长的任务。

Seesion 模式适合短时间运行的任务,一 般是批处理任务。若用 Per Job 模式去运行短时间的任务,那就需要频繁的申请资源,运行结束后,还需要资源释放,下次还需再重新申请资源才能运行。显然,这种任务会频繁启停的情况不适用于 Per Job 模式,更适合用 Session 模式。

Yarn 优缺点

优点:

  • 资源的统一管理和调度
  • 资源隔离
  • 自动 failover 处理

缺点:

  • 运维部署成本较高
  • 灵活性不够

Flink on k8s 架构

XK6Ok6.md.png
XK6Ok6.md.png

整个交互的流程比较简单,用户往 Kubernetes 集群提交定义好的资源描述文件即可,例如 deployment、configmap、service 等描述。后续的事情就交给Kubernetes 集群自动完成。Kubernetes 集群会按照定义好的描述来启动 pod,运行用户程序。各个组件的具体工作如下:

  • Service: 通过标签 (label selector) 找到 job manager 的 pod 暴露服务。
  • Deployment:保证 n 个副本的 container 运行 JM/TM,应用升级策略。
  • ConfigMap:在每个 pod 上通过挂载 /etc/flink 目录,包含 flink-conf.yaml内容。

QA

Q: Flink 在 K8s 上可以通过 Operator 方式提交任务吗?

目前 Flink 官方还没有提供 Operator 的方式,Lyft 公司开源了自己的 Operator 实现:https://github.com/lyft/flinkk8soperator。

Q: 在 K8s 集群上如果不使用 Zookeeper 有没有其他高可用(HA)的方案?

Etcd 是一个类似于 Zookeeper 的高可用键值服务,目前 Flink 社区正在 考 虑 基 于 Etcd 实 现 高 可 用 的 方 案(https://issues.apache.org/jira/browse/ FLINK-11105)以及直接依赖 K8s API 的方案(https://issues.apache.org/jira/ browse/FLINK-12884)。

Q: Flink on K8s 在任务启动时需要指定 TaskManager 的个数,有和 Yarn 一样的动态资源申请方式吗?

Flink on K8s 目前的实现在任务启动前就需要确定好 TaskManager 的个数, 这样容易造成 TM 指定太少,任务无法启动,或者指定的太多,造成资源浪费。社区 正在考虑实现和 Yarn 一样的任务启动时动态资源申请的方式。这是一种和 K8s 结 合的更为 Nativey 的方式,称为 Active 模式。Active 意味着 ResourceManager 可以直接向 K8s 集群申请资源。具体设计方案和进展请关注: https://issues.apache.org/jira/browse/FLINK-9953

Reference

  1. https://developer.aliyun.com/article/749536
  2. https://toutiao.io/posts/d1ox8p/preview
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Yarn 架构
  • PerJob与Session对比
  • Yarn 优缺点
  • Flink on k8s 架构
  • QA
  • Reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档