standalone模式
App提交应用给Dispatcher,Dispatcher接受到这个任务后, 启动并提交应用JobManager,(一个job就会对应一个jobManager进行管理), jobManager对当前的应用进行分析,解析成一个执行图,可以解析出当前的 job有多少个任务,就可以知道有多少个slot来运行,向resourceManager请求, resouceManager启动对应的taskManager,taskManager将自己的slots向ResourceManger 进行注册,ResouceManager向TaskManger发出提供slot指令,TaskManager向 JobManager提供slots,JobManager向TaskManager分发任务,TaskManager启动任务(这个阶段 会存在多个TaskManager数据的交互)
yarn模式

flinkClient 上传flink的jar包和配置到HDFS,将job提交到yarn的ResourceManger, yarn resourceManager分配Container资源并通知对应的NodeManager上启动一个applicationMaster(每提交一个flink job 就会启动一个applicationMaster),applicationMaster 会包含当前要启动的jobManager和flink自己内部要使用的resourceManager. jobManager对当前的应用进行分析,解析成一个执行图,可以解析出当前的 jobManager向自己的flink resourceManager请求申请启动 taskManager,flink自己的resourceManager本身并没有资源,然后会向yarn resouceManager启动TaskManager, yarn resourceManager根据提交的配置分配Container资源,由ApplicationMaster通知资源所在节点的对应的nodeManager启动taskManager,nodeManager加载Flink的Jar包和配置构建环境并启动然后启动相关的taskManager taskManager将自己的slots向flink ResourceManger 进行注册,flink ResouceManager向TaskManger发出提供slot指令,TaskManager向 JobManager提供slots,JobManager向TaskManager分发任务,TaskManager启动任务(这个阶段 会存在多个TaskManager数据的交互)
|