1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| # Per-Job 首先Client提交Yarn App,比如JobGraph或者JARs
接下来Yarn的ResourceManager会申请第一个Container 这个Container通过Application Master启动进程 Application Master里面运行的是Flink程序 即Flink-Yarn ResourceManager和JobManager
最后Flink-Yarn ResourceManager向Yarn ResourceManager申请资源 当分配到资源后,启动TaskManager TaskManager启动后向Flink-Yarn ResourceManager进行注册 注册成功后JobManager就会分配具体的任务给TaskManager开始执行
# Session 在Per Job模式中,执行完任务后整个资源就会释放,包括JobManager,TaskManager都全部退出 而Session模式则不一样,它的Dispatcher和ResourceManager是可以复用的 Session模式下,当Dispatcher在收到请求之后,会启动JobManager(A),让JobManager(A)来完成启动TaskManager 接着会启动JobManager(B)和对应的TaskManager的运行 当A、B任务运行完成后,资源并不会释放 Session模式也称为多线程模式,其特点是资源会一直存在不会释放 多个JobManager共享一个Dispatcher,而且还共享Flink-YARN ResourceManager
# 应用场景 Session模式和Per Job模式的应用场景不一样 Per Job模式比较适合那种对启动时间不敏感,运行时间较长的任务 Seesion模式适合短时间运行的任务,一般是批处理任务 若用Per Job模式去运行短时间的任务,那就需要频繁的申请资源 运行结束后,还需要资源释放,下次还需再重新申请资源才能运行 显然,这种任务会频繁启停的情况不适用于Per Job模式,更适合用Session模式
|