Apache Flink:每台计算机的TaskManager数量

时间:2018-12-27 08:33:48

标签: apache-flink

每台计算机的CPU内核数为四个。在flink独立模式下,我应该如何在每台计算机上设置TaskManager的数量?

  1. 1个TaskManager,每个TaskManager都有4个插槽。
  2. 2个TaskManager,每个TaskManager都有2个插槽。
  3. 4个TaskManager,每个TaskManager都有1个插槽。此设置就像apache-storm。

3 个答案:

答案 0 :(得分:2)

通常,每个服务器有一个TaskManager,并且(根据bupt_ljy引用的文档)每个物理CPU内核有一个插槽。所以我会选择您的#1。

答案 1 :(得分:1)

还考虑了Flink的调度算法。我们经常遇到这样的问题:在多个主机同时运行一个大型任务管理器的情况下,所有作业都调度到一个主机上,这可能会导致负载问题。

我们最终使每台主机具有多个较小的任务管理器,并且作业似乎分布得更好(尽管它们仍然经常聚集在一个节点上)。

因此,根据我的经验,我更倾向于4个任务管理器(每个插槽1个插槽),或者让2个任务管理器(每个插槽2个插槽)妥协。

答案 2 :(得分:0)

我认为这取决于您的应用程序。

在官方文档Distributed Runtime Environment中,它说根据经验法则,一个好的默认任务插槽数将是CPU内核数。使用超线程,每个插槽将占用2个或更多硬件线程上下文。

但是,如果您必须在应用程序中使用大量内存,则在一个任务管理器中不需要太多插槽。