flink作业仅在一个taskmanager上运行

hgc7kmma  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(863)

我正在运行emr cluster,其中安装了3个m5.xlarge节点(1个主节点,2个核心节点)和flink 1.8(emr-5.24.1)。
在主节点上,我使用以下命令在yarn集群中启动flink会话:

flink-yarn-session -s 4 -jm 12288m -tm 12288m

这是每个taskmanager允许我根据所选示例类型设置的最大内存和插槽数。
启动过程中有一个日志:

org.apache.flink.yarn.AbstractYarnClusterDescriptor           - Cluster specification: ClusterSpecification{masterMemoryMB=12288, taskManagerMemoryMB=12288, numberTaskManagers=1, slotsPerTaskManager=4}

这表明只有一个任务管理器。另外,在查看yarn节点管理器时,我看到只有一个容器在一个核心节点上运行。yarn资源管理器显示应用程序只使用了集群的50%。
在当前的设置中,我假设我可以运行flink job,并行度设置为8(2个taskmanagers*4个插槽),但是如果提交的job将并行度设置为4以上,那么它会在一段时间后失败,因为它无法获得所需的资源。
如果作业并行度设置为4(或更少),则作业将按其应该的方式运行。从ganglia的cpu和内存利用率来看,只有一个节点被利用,而另一个节点是平坦的。
为什么应用程序只在一个节点上运行,如何利用另一个节点?我是否需要在Yarn上设置一些东西,它也会在另一个节点上设置flink?
在flik的早期版本中,有一个启动选项-n,用于指定任务管理器的数量。该选项现在已过时。

zf9nrax1

zf9nrax11#

在启动“会话群集”时,应该只看到一个用于flink作业管理器的容器。这可能是您在Yarn资源管理器中看到的。提交作业后,将自动为任务管理器分配其他容器。
在资源管理器ui中可以看到多少内核?
别忘了作业管理器还使用了8个可用的内核。
你需要在这里做点“数学”。例如,如果您将插槽数设置为每个tm 2个,并且每个tm内存较少,那么提交的作业的并行度为6,那么它应该与3个tm一起工作。

相关问题