Yarn 架构

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

组件列表

  • 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

两者区别图

Flink perjob 提交流程

Flink on yarn session 提交流程

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

Seesion 模式适合短时间运行的任务,一

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

Yarn 优缺点

优点:

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

缺点:

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

Flink on k8s 架构

整个交互的流程比较简单,用户往 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

Flink on Yarn和k8s的更多相关文章

  1. Flink on yarn的配置及执行

    1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink可以自己搭建集群模式已提供为庞大数据的计算.但在实际应用中.都是计算hdfs上的 ...

  2. flink on yarn 用户代码获取keytab本地文件和principal的方法

    flink on yarn的情况下配置的keytab文件会根据每次yarn application 分配taskmanager的变化都是不一样的,在部分场景下用户代码也需要获得keytab文件在yar ...

  3. flink on yarn部分源码解析

    转发请注明原创地址:https://www.cnblogs.com/dongxiao-yang/p/9403427.html flink任务的deploy形式有很多种选择,常见的有standalone ...

  4. flink hadoop yarn

    新一代大数据处理引擎 Apache Flink https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/ 新一代大数据处 ...

  5. Flink on Yarn模式启动流程分析

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink On Yarn 架构 Paste_Image.png 前提条件首先需要配置YARN_CONF_DI ...

  6. Flink on Yarn模式启动流程源代码分析

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink on yarn的启动流程可以参见前面的文章 Flink on Yarn启动流程,下面主要是从源码角 ...

  7. Flink on YARN时,如何确定TaskManager数

    转自: https://www.jianshu.com/p/5b670d524fa5 答案写在最前面:Job的最大并行度除以每个TaskManager分配的任务槽数. 问题 在Flink 1.5 Re ...

  8. Flink on Yarn的两种模式及HA

    转自:https://blog.csdn.net/a_drjiaoda/article/details/88203323 Flink on Yarn模式部署始末:Flink的Standalone和on ...

  9. flink on yarn模式下两种提交job方式

    yarn集群搭建,参见hadoop 完全分布式集群搭建 通过yarn进行资源管理,flink的任务直接提交到hadoop集群 1.hadoop集群启动,yarn需要运行起来.确保配置HADOOP_HO ...

  10. Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析

    一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...

随机推荐

  1. mysql读写分离之springboot集成

    springboot.mysql实现读写分离 1.首先在springcloud config中配置读写数据库 mysql: datasource: readSize: 1 #读库个数 type: co ...

  2. 基于surging 如何利用peerjs进行语音视频通话

    一 . 概述 PeerJS 是一个基于浏览器WebRTC功能实现的js功能包,简化了WebrRTC的开发过程,对底层的细节做了封装,直接调用API即可,再配合surging 协议组件化从而做到稳定,高 ...

  3. JDK有用的新特性-Switch

    目录 箭头表达式,新的 case 标签 yeild 返回值 Java Record Switch 的三个方面,参考: JEP 361 支持箭头表达式 支持 yied 返回值 支持 Java Recor ...

  4. 【YashanDB数据库】数据库运行正常,日志出现大量错误metadata changed

    问题现象 客户在麒麟kylin v10 sp1环境上部署YashanDB,运行正常, 但是在巡检中发现run.log中有大量错误日志文件metadata changed,需要排查原因 问题单:前置机大 ...

  5. CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比

    css单位我们常用的是px,也即是像素.随着网页开发自适应的要求,css3新增了许多单位,rem.vw和vh.vmin和vmax.ch和ex等. em 做前端的应该对em不陌生,不是什么罕见的单位,是 ...

  6. 记一次 .NET某上位机视觉程序 卡死分析

    一:背景 1. 讲故事 前段时间有位朋友找到我,说他的窗体程序在客户这边出现了卡死,让我帮忙看下怎么回事?dump也生成了,既然有dump了那就上 windbg 分析吧. 二:WinDbg 分析 1. ...

  7. fp16 的累加误差有多大

    本文地址:https://wanger-sjtu.github.io/fp16-err/ 最近在项目中需要实现fp16的数据类型做FFN的计算,算子实现的同学反馈误差与x86上得到的golden数据有 ...

  8. 命令行gcc -v和g++ -v输出版本不一致

    命令行gcc -v和g++ -v输出版本不一致 前言:本文初编辑于2024年1月30日 CSDN主页:https://blog.csdn.net/rvdgdsva 博客园主页:https://www. ...

  9. 手搓大模型Task03:手搓一个最小的 Agent 系统

    前言   训练一个大模型是一件高投入低回报的事情,况且训练的事情是由大的巨头公司来做的事情:通常我们是在已有的大模型基础之上做微调或Agent等:大模型的能力是毋庸置疑的,但大模型在一些实时的问题上, ...

  10. foobar2000 v2.1.5 汉化版(更新日期:2024.09.08)

    foobar2000 v2.1.5 汉化版 -----------------------[软件截图]---------------------- -----------------------[软件 ...