Flink-源码学习-集群启动-standalone
一、概述
Flink 采用 Master-Slave 架构,其中 JobManager 作为集群 Master 节点,主要负责任务协调和资源分配,TaskManager 作为 slave 节点,用于执行任务。
二、集群启动脚本
Flink 集群的启动脚本在 flink-dist
子项目中,位于 flink-bin 下的 bin 目录,启动脚本为: startcluster.sh
该脚本会首先调用 config.sh 分别从 conf/masters
和 conf/workers
配置文件中获取 masters 和 workers 信息,然后分别:
通过
jobmanager.sh
启动 JobManager通过
taskmanager.sh
启动 TaskManager
他们的内部,都通过 flink-daemon.sh
脚本来启动 JVM 进程,分析 flink-daemon.sh
脚本发现:
JobManager 的启动代号: standalonesession,启动主类 StandaloneSessionClusterEntrypoint
1
2
3(standalonesession)
CLASS_TO_RUN=org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint
;;TaskManager 启动主类 TaskManagerRunner
1
2
3(taskexecutor)
CLASS_TO_RUN=org.apache.flink.runtime.taskexecutor.TaskManagerRunner
;;
三、集群启动
3.1. JobManager 启动
JobManager 相当于集群的 Master 节点,整个集群有且只有一个活跃的 JobManager(在高可用场景下,可能会出现多个 JobManager,但是只有一个是正在活跃的领导 Leader 节点,其他都是 Standby 节点)。
3.2. TaskManager 启动
TaskManager 相当于整个集群的 Slave 节点,负责具体的任务执行和对应任务在每个节点上的资源申请和管理。每一个 TaskManager 都包含了一定数量的任务槽(slots)。slot 是资源调度的最小单位,slot 的数量限制了 TaskManager 能够并行处理的任务数量。