Parallel processing 一个TaskManager有三个插槽与Apache Flink中三个TaskManager有一个插槽相同吗
据我所知,在Flink中,如果需要,JobManager可以将一个作业分配给多个TaskManager,并使用多个插槽。例如,可以使用五个插槽为一个作业分配三个TaskManager 现在,我执行一个带有三个插槽的TaskManager(TM),分配给3G RAM和一个CPU 这是否完全等同于执行三个TaskManager,共享一个CPU,并将每个TaskManager分配给1G RAMParallel 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 |
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的,而不是大的,我想。