每台计算机的CPU内核数为四个。在flink独立模式下,我应该如何在每台计算机上设置TaskManager的数量?
答案 0 :(得分:2)
通常,每个服务器有一个TaskManager,并且(根据bupt_ljy引用的文档)每个物理CPU内核有一个插槽。所以我会选择您的#1。
答案 1 :(得分:1)
还考虑了Flink的调度算法。我们经常遇到这样的问题:在多个主机同时运行一个大型任务管理器的情况下,所有作业都调度到一个主机上,这可能会导致负载问题。
我们最终使每台主机具有多个较小的任务管理器,并且作业似乎分布得更好(尽管它们仍然经常聚集在一个节点上)。
因此,根据我的经验,我更倾向于4个任务管理器(每个插槽1个插槽),或者让2个任务管理器(每个插槽2个插槽)妥协。
答案 2 :(得分:0)
我认为这取决于您的应用程序。
在官方文档Distributed Runtime Environment中,它说根据经验法则,一个好的默认任务插槽数将是CPU内核数。使用超线程,每个插槽将占用2个或更多硬件线程上下文。
但是,如果您必须在应用程序中使用大量内存,则在一个任务管理器中不需要太多插槽。