这里只介绍Standalone模式
Client
flink官方支持多种模式standalone/yarn/mesos
flink在启动的时候,会根据参数去执行相应的逻辑。而这些逻辑都在CliFrontEnd这个类中。

而flink是如何选择使用哪种模式呢?首先CliFrontEnd在初始化的时候,有一个静态块

这个静态块在custormCommandLine加入了两个Cli,分别是yarn和default。在执行run命令的时候,客户端会选择对应的Cli

而这个选择的逻辑,是通过遍历custormCommandLine,分别执行对应元素的isActive方法来实现的

JobManager
jobManager的启动是通过flink-daemo的脚本执行的。这个脚本里直接调用JobManager.scala这个class。启动JobManager就在对应的main方法中

TaskManager和JobManager是相似的,都是通过flink-daemon的脚本设置对应要执行的class,进而初始化TaskManager.scala

网友评论