flink1.9 JobGraph部署到Yarn
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flink1.9 JobGraph部署到Yarn相关的知识,希望对你有一定的参考价值。
参考技术Aflink将用户编写的程序转换为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
FlinkFlink 1.9 升级 到 flink 1.12.4 报错 flink.client.cli.AbstractCustomCommandLine <init>
FlinkFlink 1.9 升级 到 flink 1.12.4 报错 shaded netty4 AbstractChannel AnnotatedConnectException