本篇我们介绍下,Flink在YARN上运行流程:
- 当开始一个新的Flink yarn 会话时,客户端首先检查所请求的资源(containers和内存)是否可用。如果资源够用,之后,上传一个jar包,包含Flink和HDFS的配置。
- 客户端向yarn resource manager发送请求,申请一个yarn container去启动ApplicationMaster。
- yarn resource manager会在nodemanager上分配一个container,去启动ApplicationMaster
- yarn nodemanager会将配置文件和jar包下载到对应的container中,进行container容器的初始化。
- 初始化完成后,ApplicationMaster构建完成。ApplicationMaster会为TaskManagers生成新的Flink配置文件(使得TaskManagers根据配置文件去连接到JobManager),配置文件会上传到HDFS。
- ApplicationMaster开始为该Flink应用的TaskManagers分配containers,这个过程会从HDFS上下载jar和配置文件(此处的配置文件是AM修改过的,包含了JobManager的一些信息,比如说JobManager的地址)
- 一旦上面的步骤完成,Flink已经建立并准备好接受jobs。
注意事项:
- 客户端:这里的客户端就是用户提交Flink应用的节点。
- ApplicationMaster和JobManager运行同一个container中;因此ApplicationMaster,生成新的配置文件时,就知道JobManager的信息,比如说JobManager的地址。
- AM:也就是ApplicationMaster。ApplicationMaster container还为Flink的web界面提供服务。
- YARN中代码使用的端口都是临时的,这就使得用户可以并行执行多个FLink会话。