本篇我们介绍下,Flink在YARN上运行流程:

 Flink1.6系列之—Flink on yarn流程详解-LMLPHP

 Flink1.6系列之—Flink on yarn流程详解-LMLPHP

Flink1.6系列之—Flink on yarn流程详解-LMLPHP

Flink1.6系列之—Flink on yarn流程详解-LMLPHP

  1. 当开始一个新的Flink yarn 会话时,客户端首先检查所请求的资源(containers和内存)是否可用。如果资源够用,之后,上传一个jar包,包含Flink和HDFS的配置。
  2. 客户端向yarn resource manager发送请求,申请一个yarn container去启动ApplicationMaster。
  3. yarn resource manager会在nodemanager上分配一个container,去启动ApplicationMaster
  4. yarn nodemanager会将配置文件和jar包下载到对应的container中,进行container容器的初始化。
  5. 初始化完成后,ApplicationMaster构建完成。ApplicationMaster会为TaskManagers生成新的Flink配置文件(使得TaskManagers根据配置文件去连接到JobManager),配置文件会上传到HDFS。
  6. ApplicationMaster开始为该Flink应用的TaskManagers分配containers,这个过程会从HDFS上下载jar和配置文件(此处的配置文件是AM修改过的,包含了JobManager的一些信息,比如说JobManager的地址)
  7. 一旦上面的步骤完成,Flink已经建立并准备好接受jobs。

注意事项:

  • 客户端:这里的客户端就是用户提交Flink应用的节点。
  • ApplicationMaster和JobManager运行同一个container中;因此ApplicationMaster,生成新的配置文件时,就知道JobManager的信息,比如说JobManager的地址。
  • AM:也就是ApplicationMaster。ApplicationMaster container还为Flink的web界面提供服务。
  • YARN中代码使用的端口都是临时的,这就使得用户可以并行执行多个FLink会话。
04-11 15:25