Flink on Yarn 提交流程与提交模式

本篇文章主要内容:

  1. Flink on Yarn的任务提交流程,以及任务运行过程中的交互;
  2. 根据Flink Application向Job Manager提交任务模式不同,阐述提交的三大模式:
    2.1 Session Mode
    2.2 Per-Job Mode
    2.3 Application Mode

1 任务提交流程

Flink on Yarn任务提交流程图
具体流程如下:

  1. 向hdfs上传Flink的jar包和配置,以便JobManager与TaskManager共享HDFS的数据;
  2. 向Yarn的ResourceManager提交Job;
  3. ResourceManager接收到请求后,先分配Container资源,然后通知NodeManager启动ApplicationMaster;ApplicationMaster会加载HDFS的配置,启动Flink对应的ResourceManager,JobManager,然后JobManager会分析当前的作业图(JobGraph),将它转化成物理层面的数据流图,也叫执行图(ExecutionGraph,包含了所有可以并发执行的任务),从而知道当前需要的具体资源;
  4. 接着,JobManager向ResourceManager申请资源,是先向flink的ResourceManager申请,然后flink的ResourceManager把此请求转发给Yarn的ResourceManager;
  5. Yarn的ResourceManager接收到请求后,继续分配Container资源,然后通知ApplicationMaster启动更多的TaskManager(先分配好Container资源,再通知ApplicationMaster启动TaskManager)。 Container在启动TaskManager时也会从HDFS加载Jar包和配置;
  6. 最后,TaskManager启动后,会向JobManager发送心跳包。JobManager向TaskManager发送任务;

2 三大提交模式

在这里插入图片描述
三大模式的主要不同在于:

  1. 集群的生命周期和资源隔离级别;
  2. 应用程序的main()方法是在client还是在cluster发动;

2.1 Session Mode

多个作业向同一个Job Manager提交,这意味着JobManager有较大负载;
如果其中一个job行为异常或导致JobManager失败,那么在该TaskManager上运行的所有job都将收到故障的影响;
除了对导致故障的作业产生负面影响外,这还意味着在大规模恢复过程中,所有重启启动的任务同时访问文件系统导致它对其它服务不可用。
好处:不必为每个提交的作业支付启动开销的资源;
特点:应用程序的main()方法在客户端执行;

2.2 Per-Job Mode

每个提交的作业都会分配单独的一个Job Manager;
提供了更好的资源隔离,因为行为异常的作业只能关闭他自己的Task Manager;
特点:应用程序的main()方法在客户端执行;

2.3 Application Mode

Session Mode与Per-Job Mode他们的应用程序的main()方法都在客户端执行,具体执行的是:

  1. 本地下载应用程序的依赖项;
  2. 执行main()方法以提取在Flink runtime期间可以理解的JobGraph,并把JobGraph以及相关依赖发送到集群(也就是HDFS上);
    这使得客户端成为一个沉重的资源消耗者,因为他需要大量的网络带宽来下载依赖项并把二进制文件发送到集群,并且需要CPU周期性的执行main()方法;当大量用户共享一个客户端时这个问题就会更加明显。

基于此,Flink 1.11推出了第三种提交模式,也就是Application Mode,它为每个提交的应用创建一个集群。与其他两种模式不同的是,Application Mode应用程序的main()方法是在JobManager上执行。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bigdata_han

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

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

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

打赏作者

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

抵扣说明:

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

余额充值