运行框架
客户端
提交job的入口
bin/flink run…..
jobmanager
如果在yarn上,jobmanager就是appmaster,详情请看yarn-cluster提交流程per-job
进程级别,
每个应用一定有一个jobmanager,
高可用可有多个jobmanager
resourcesmanager
负责资源管理—>管理插槽
一个jobmanager对应一个resourcesmanager(与yarn的同名,但不是同一个)
如果在yarn上则会委托给yarn的resourcesmanager来执行
1. 当JobManager申请插槽资源时,ResourceManager会将有空闲插槽的TaskManager分配给JobManager1. 如果ResourceManager没有足够的插槽来满足JobManager的请求,它还可以向资源提供平台发起会话,以提供启动TaskManager进程的容器1. ResourceManager还负责终止空闲的TaskManager,释放计算资源。
dispatcher
1. 负责接收用户提供的作业,并且负责为这个新提交的作业启动一个新的**JobMaster **组件.1. Dispatcher也会启动一个Web UI,用来方便地展示和监控作业执行的信息。
jobMaster
jobmanager 一个集群一个
jobmaster 类似于driver,每个job都会分配一个jobmaster
taskManager
进程级别
一个taskmanager(worker),一个container
一个nodemanager 可以给多个contaniner,所以一个nodemanager 可以起多个 taskmanager
向jobmanager注册插槽
taskmanager之间也会进行数据交换
一般是shuffler操作或并行度不一致,否则只会在本taskmanager进行跨slot
slot
slots(封装了内存,并共享cpu)
线程级别,线程不共享(线程安全)
内存均分
cpu可以共享
高级流程视角:
yarn-cluster提交流程per-job

- Flink任务提交后,Client向HDFS上传Flink的Jar包和配置
2. 向Yarn ResourceManager提交任务,ResourceManager分配Container资源
3. 通知对应的NodeManager启动ApplicationMaster,ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager
4. ApplicationMaster向ResourceManager申请资源启动TaskManager
5. ResourceManager分配Container资源后,由ApplicationMaster通知资源所在节点的NodeManager启动TaskManager
6. NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager
7. TaskManager启动后向JobManager发送心跳包,并等待JobManager向其分配任务。
