Flink 作业资源管理
目前,Flink是无法做到Job在运行时动态调整并行度的,不经历重启直接拉起新的Task实列进行运行,目前都是基于重启恢复机制来实现的,因为涉及到状态管理
Flnk 在资源管理中,资源的获取方式包含两种模式:
- Active 模式:主动式,Flink 可以主动的申请、释放资源(通过与资源管理框架集成,如:Yarn、Mesos)
- Reactive 模式:被动响应式,该模式由外部系统来进行分配,释放资源,Flink只是简单地对可用资源进行响应。(这种模式对于基于容器环境相当有意义,如K8S)
现在Flink的资源管理模式是Action 模式,有用户明确指定Job需要的资源,JobMaster 会像ResourceManager 去请求用户的指定的全量资源,当ResourceManager 无法满足JobManager 的申请需求时,该Job 将无法进行正常启动,它会陷入失败重启-》再次尝试申请的循环。
为了能够同时支持Active/Reactive 这两种模式,Flink 1.12.0 版本引入了申明式资源管理设计
该功能和原先最大的差别在于:JobMaster 不再去逐个请求Slot,二十申明需要的资源情况,对资源要求是弹性范围的,不是固定的。
弹性资源包含四个参数(min,targer,max,rs)
- min:执行job的最小资源
- target:jobMaster 期望获得的常规资源需求,它是可变的