flink 学习备忘录-flink on yarn

Client提交App到RM上面去运行,然后RM分配第一个container去运行AM,然后由AM去负责资源的监督和管理。
需要说明的是,Flink的yarn模式更加类似spark on yarn的cluster模式,在cluster模式中,dirver将作为AM中的一个线程去运行
在Flink on yarn模式也是会将JobManager启动在container里面,去做个driver类似的task调度和分配,
YARN AM与Flink JobManager在同一个Container中,这样AM可以知道Flink JobManager的地址,从而AM可以申请Container去启动Flink TaskManager。待Flink成功运行在YARN集群上,Flink YARN Client就可以提交Flink Job到Flink JobManager,并进行后续的映射、调度和计算处理。

  1. 指每提交一个任务,任务完成后资源就会被释放
  2. 首先 Client 提交 Yarn App (比如 JobGraph 或者 JARs)
  3. 接着 Yarn 的 ResourceManager 会申请第一个 Container
  4. 这个 Container 通过 Application Master 启动进程
  5. Application Master 里面运行的是 Flink 程序,即 Flink-Yarn ResourceManager 和 JobManager。
  6. 最后 Flink-Yarn ResourceManager 向 Yarn ResourceManager 申请资源
  7. 当分配到资源后,启动 TaskManager TaskManager 启动后向 Flink-Yarn ResourceManager 进行注册,
  8. 注册成功后 JobManager 就会分配具体的任务给 TaskManager 开始执行

per job 模式中,执行完任务后整个资源就会被释放,session模式中,Dispatcher和resourcemanager是复用的:
当Dispatcher收到请求后,会启动JobManager(A),让jobManager(A)来完成启动TaskManager
接着会启动JobManager(B)和对应的TaskManager.当A,B任务完成后,资源并不会释放.
Session模式也被称为多线程模式,其特点是资源会一直存在不会释放
多个JobManager共享一个Dispatcher,还共享Flink-YARN的ResourceManager

引用flink面试题整理

posted @ 2021-04-12 17:31  foola  阅读(136)  评论(0)    收藏  举报