FlinkClient的主要功能

image.png

ApplicationCode 运行:

  1. ExecutionEnvironment:执行环境
    1. checkPoint的配置
    2. 存储Transformation相关信息
  2. PackageProgram
    1. 构建classPath以及ClassLoader(UserClassLoader)
  3. PipelineEXecution 运行applicationCode
  4. 构建JobGraph

任务管理

  • Submit job
  • Cancel Job
  • Trigger SavePoint
  • jobStatus Track

集群管理

  • 创建集群
  • 停止集群

FlinkClient的主要组件

  • 执行环境ContextEnvironment
    • StreamExecutionEnvironment
    • ExecutionEnvironment
  • PipelineExecutor pipeline执行器,构建出一个JobGraph对象
    • LocalExecutor-MiniCluster 对应idea执行器
    • AbstractJobClusterExecutor 对应perjob任务执行
      • YarnJobClusterExecutor 目前就yarn实现了Perjob任务运行
    • AbstractSessionCLusterExecutor
      • RemoteExecutor standLone执行
      • KubermetesSessionClusterExecutor
      • YarnSessionCLusterExecutor yarn执行
  • CLusterDescriptor 与具体资源管理器相连,创建对应集群(如果申请的是native资源,就需要和对应的资源管理器相连申请资源)
    • StandloneClusterDescriptor
    • YarnClusterDescriptor
    • KubernetesClusterDescriptor

Session集群创建流程
image.png

ApplicationCode的运行过程

image.png

Flink作业提交流程

image.png

新老版本per-job提交写法区别

  • 老版本(<=1.10) flink run -m yarn-cluster -c x xx.jar
  • 新版本(>=1.11) flink run -t yarn-per-job -c xxx.jar

PerJob提交流程

JobManager在Perjob模式下的进程名称——-YarnJobClusterEntrypoint
TaskManager进程名称—-TaskExecutorRunner