flink1.9 JobGraph部署到Yarn

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flink1.9 JobGraph部署到Yarn相关的知识,希望对你有一定的参考价值。

参考技术A

flink将用户编写的程序转换为jobGraph进行提交。ProgramDeployer线程类负责将用户程序部署到集群中,它根据ExecutionContext是否包含ClusterId选择重新启动集群部署任务或者将任务运行在已有的集群中。同时,在部署时需要获取ClusterDescriptor,也就是集群相关的配置信息,flink根据启动的命令行来解析将任务部署在yarn集群还是standalone集群。当然如果我们不是通过执行flink脚本的当时提交任务,可以根据部署的方式手动构建ClusterDescriptor。我们的任务部署在yarn上,所以使用的是YarnClusterDescriptor。

创建ClusterDescriptor

集群启动入口

创建新的集群

Yarn应用部署

通过调用AbstractYarnClusterDescriptor#deployInternal方法来启动Flink应用程序。其中主要流程有:

Yarn启动AppMaster也就是启动Flink JobManager是最为核心的步骤,它主要包含以下步骤:

启动JM的命令行:

学习点:

上传到HDFS中的文件,红色表示序列化的JobGraph,local Resource中的key为job.graph。

AM运行时获取JobGraph
生产环境使用yarn per-job模式执行,也就是一个yarn应用只执行一个jobGraph,看下yarn per-job模式的执行流程。

jobGraph的执行是由Dispatcher发起的,在Dispatcher创建的时候会先从LocalResource中提取该JobGraph,把它传递给SubmittedJobGraphStore的子类SingleJobSubmittedJobGraphStore,当Dispatcher启动并成为Leader后会从SingleJobSubmittedJobGraphStore里面恢复JobGraph,执行调度。具体流程:

以上是关于flink1.9 JobGraph部署到Yarn的主要内容,如果未能解决你的问题,请参考以下文章

Flinkflink 升级 the given -yarn-cluster does not contain a valid port

Flink1.9重大改进和新功能

Flink1.9重大改进和新功能

FlinkFlink 1.9 升级 到 flink 1.12.4 报错 flink.client.cli.AbstractCustomCommandLine <init>

flink1.9升级&alink使用

FlinkFlink 1.9 升级 到 flink 1.12.4 报错 shaded netty4 AbstractChannel AnnotatedConnectException