flink部署yarn session模式,发现提交给他的作业每次都是先将1个taskmanager上的slot全都分配完后再起1个taskmanger,这导致给1个作业配置的所有并发全都在1个taskmanger上反压很高。有没有办法让这种yarn session模式对每个作业的并发分配到不同taskmanger上啊?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Flink on YARN Session模式下,作业的TaskManager资源分配策略默认是基于可用资源进行的,这可能导致您观察到的一个现象:即新提交的作业会优先使用现有TaskManager的空闲Slot,直至饱和后再启动新的TaskManager。这种行为有时会导致单个TaskManager上的并发任务过多,从而引发反压问题。
要改善这种情况,虽然直接在Session模式下控制每个作业的并发均匀分布在不同TaskManager上没有直接的配置开关,但您可以采取以下策略来优化资源分配和减轻反压:
调整TaskManager的Slot数量:
taskmanager.numberOfTaskSlots
)。这样,即使一个TaskManager被完全占用,系统也更倾向于较早地启动新的TaskManager来分散负载。合理设置资源限制:
优化作业提交参数:
parallelism
),来尝试控制作业的资源需求,间接影响其在TaskManagers之间的分布。尽管不能精确控制到每个TaskManager,但合理的并行度设置可以帮助更好地利用集群资源,减少局部过载情况。采用Per-Job Cluster模式:
综上所述,虽然直接控制Session模式下的并发均匀分布较为困难,但通过上述策略的调整,可以在一定程度上缓解您遇到的问题。特别是调整TaskManager的Slot数量和合理规划作业提交时的资源配置,是较为直接且有效的手段。