背景:
之前分析了flink的rpc,有了这个基础,可以了解flink的集群的主要工作机制,以及当中的设计思想,本次只看本地集群模式。
分析目标:
1、flink的集群启动脚本分析。
2、Flink Standalone 主节点 StandaloneSessionClusterEntrypoint 启动源码分析
ResourceManager 启动
DispatcherRunner启动
WebmonitorEndpoint启动
3、Flink Standalone 从节点 TaskManagerRunner 启动源码分析 TaskExecutor 启动(下篇分析)
4、TaskExecutor 和 ResourceManager 的注册,心跳和负载汇报(下篇分析)
一、启动脚本分析
如下图,启动脚本是从start-cluster.sh开始的。
该脚本会首先调用config.sh来获取master和worker,然后通过jobmanager.sh和taskmanager.sh分别启动jobmanager和taskmanager.
1、JobManager 的启动代码:standalonesession,实现类是:StandaloneSessionClusterEntrypoint
2、TaskManager 的启动代码:taskexecutor,实现类是:TaskManagerRunner
集群启动有支持3种 如下图所示:
这里先看StandaloneSessionClusterEntrypoint 类
为了避免图片过多,将进行简写
ClusterEntrypoint.runClusterEntrypoint(entrypoint){ ...... //启动集群 clusterEntrypoint.startCluster(){ runCluster(configuration, pluginManager){ synchronized (lock) {