Parallel processing 一个TaskManager有三个插槽与Apache Flink中三个TaskManager有一个插槽相同吗

Parallel processing 一个TaskManager有三个插槽与Apache Flink中三个TaskManager有一个插槽相同吗,parallel-processing,architecture,apache-flink,Parallel Processing,Architecture,Apache Flink,据我所知,在Flink中,如果需要,JobManager可以将一个作业分配给多个TaskManager,并使用多个插槽。例如,可以使用五个插槽为一个作业分配三个TaskManager 现在,我执行一个带有三个插槽的TaskManager(TM),分配给3G RAM和一个CPU 这是否完全等同于执行三个TaskManager,共享一个CPU,并将每个TaskManager分配给1G RAM case 1 --------------- | 3G RAM | | one CPU |

据我所知,在Flink中,如果需要,JobManager可以将一个作业分配给多个TaskManager,并使用多个插槽。例如,可以使用五个插槽为一个作业分配三个TaskManager

现在,我执行一个带有三个插槽的TaskManager(TM),分配给3G RAM和一个CPU

这是否完全等同于执行三个TaskManager,共享一个CPU,并将每个TaskManager分配给1G RAM

case 1
---------------
| 3G RAM      |
| one CPU     |
| three slots |
| TM          |
---------------

case 2
--------------------------------------------|
|              one CPU                      |
|  ------------  ------------ ------------  |
|  | 1G RAM   |  | 1G RAM   | | 1G RAM   |  |
|  | one slot |  | one slot | | one slot |  |
|  | TM       |  | TM       | | TM       |  |
|  ------------  ------------ ------------  |
--------------------------------------------|

两个方向都存在性能和操作差异

当在非集装箱化环境中运行时,使用RocksDB状态后端,每台机器有一个TM和多个插槽是有意义的。这将使每TM开销最小化。然而,每TM的开销并没有那么大

另一方面,每个TM运行一个插槽提供了一些有用的隔离,并减少了垃圾收集的影响,这与基于堆的状态后端尤其相关


对于集装箱化部署,通常建议每个TM使用一个插槽,直到达到某种显著规模,此时您将希望通过每个TM添加更多插槽而不是更多的TM来扩展。问题是检查点协调器需要与每个TM协调(但不是与每个插槽协调),随着TMs的数量达到数百或数千,这可能会成为瓶颈。

不太可能,因为TM占用的JVM内存有开销。。。我猜在cpu里也是。有效的是,你将采取更容易的gc的,而不是大的,我想。