【问题起源】
一开始配置的flink作业中,一个task manager对应10G内存和1个core/一个slot,后面发现运行过中,看监控,core经常会超用,就想着应该怎么配置
【参数配置】
一开始想着修改配置为一个task manager对应10G内存和2个core/一个slot,但是这样子会导致同一个task manager中一个slot同时只能执行一个subtask(虽然可以用2个core),资源利用率会降低
所以修改为:
一个task manager对应10G内存和2个core/2个slot,如下图:
这样的话,就可以在一个task manager(jvm)中有两个并发,共用两个core(slot只能平分内存,不能平分core)
【总结】
我们可以简化成以下的问题:
在Flink中,一个3G内存、2个core的TaskManager中,如果将其分别划分为只有一个slot和两个slot,区别在于任务的并行度和资源分配。当一个TaskManager只有一个slot时,意味着只能同时运行一个任务,即并行度为1。这可能会导致资源利用率较低,因为另一个core未被充分利用。而当一个TaskManager有两个slot时,可以同时运行两个任务,即并行度为2,这样可以更有效地利用资源,提高任务执行效率。
update:这样配置后,会发现job manager的内存使用会增多,需要关注下oom问题