每台机器的cpu核心数是4个。在flink独立模式下,我应该如何设置每台机器上TaskManager的数量?1个taskmanager,每个taskmanager有4个插槽。2个taskmanager,每个taskmanager有2个插槽。4个taskmanager,每个taskmanager有1个插槽。此设置类似于apache storm。
daolsyd01#
我想这取决于你的申请。它说,在官方文档分布式运行时环境中,根据经验,一个好的默认任务槽数是cpu核数。使用超线程时,每个插槽会占用2个或更多硬件线程上下文。但是,如果您必须在应用程序中使用大量内存,那么您不需要在一个任务管理器中使用太多的插槽。
siv3szwd2#
此外,还考虑了flink的调度算法。我们经常遇到这样的问题:当多个主机运行一个大型任务管理器时,所有作业都被安排到一个主机上,这可能会导致负载问题。我们最终为每台主机制作了多个较小的任务管理器,而且作业似乎分布得更好(尽管它们仍然经常聚集在一个节点上)。因此,根据我的经验,我更倾向于4个任务管理者,每个任务有1个槽,或者折衷于2个任务管理者,每个任务有2个槽。
zd287kbt3#
通常情况下,每个服务器有一个taskmanager,每个物理cpu核心有一个插槽(根据bupt\u ljy引用的文档)。所以我同意你的选择。
3条答案
按热度按时间daolsyd01#
我想这取决于你的申请。
它说,在官方文档分布式运行时环境中,根据经验,一个好的默认任务槽数是cpu核数。使用超线程时,每个插槽会占用2个或更多硬件线程上下文。
但是,如果您必须在应用程序中使用大量内存,那么您不需要在一个任务管理器中使用太多的插槽。
siv3szwd2#
此外,还考虑了flink的调度算法。我们经常遇到这样的问题:当多个主机运行一个大型任务管理器时,所有作业都被安排到一个主机上,这可能会导致负载问题。
我们最终为每台主机制作了多个较小的任务管理器,而且作业似乎分布得更好(尽管它们仍然经常聚集在一个节点上)。
因此,根据我的经验,我更倾向于4个任务管理者,每个任务有1个槽,或者折衷于2个任务管理者,每个任务有2个槽。
zd287kbt3#
通常情况下,每个服务器有一个taskmanager,每个物理cpu核心有一个插槽(根据bupt\u ljy引用的文档)。所以我同意你的选择。