自学内容网 自学内容网

总结:Yarn资源管理

一、介绍

本文梳理下Yarn的资源分配计算逻辑。

二、配置 - 资源限制

1、配置NodeManager可分配的资源池的总量

<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>4096</value>
</property>
  • 作用对象:节点管理器(NodeManager)。

  • 含义:这个配置项定义了每个节点管理器可以使用的最大内存量(以 MB 为单位)。

  • 4096 表示每个节点管理器可以使用的最大内存量为 4096 MB(即 4 GB)。

  • 作用:这个配置项限制了节点管理器可以分配给容器的总内存量。换句话说,它决定了节点管理器所在机器上所有容器可以使用的内存总量。

同理:

<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>4</value>
</property>

2、配置容器可配分配的最小和最大的资源量

<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value>
</property>
  • 作用对象:资源管理器(ResourceManager)。

  • 含义:这个配置项定义了资源管理器在分配内存时,每个容器(Container)的最小内存分配量(以 MB 为单位)。

  • 1024 表示每个容器至少分配 1024 MB(即 1 GB)的内存。

  • 作用:这个配置项确保了每个容器至少有 1 GB 的内存可用。它决定了资源管理器在分配内存时,不能分配小于这个值的内存给容器。

同理:

<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>6144</value>
</property>
<property>
  <name>yarn.scheduler.minimum-allocation-vcores</name>
  <value>1</value>
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-vcores</name>
  <value>16</value>
</property>

注意:我们尽量设置yarn.scheduler.maximum-allocation-mb小于yarn.nodemanager.resource.memory-mb。

  • 以确保节点管理器有足够的内存资源来满足单个容器的最大内存请求。

三、Flink任务资源分配与Yarn资源限制的关系

如果Flink任务以per job cluster方式在yarn上运行,那么Flink任务分配的资源和Yarn上面配置的资源限制是什么关系?举个例子说明

在 Flink 以 per-job cluster 方式在 YARN 上运行时,Flink 任务的资源分配和 YARN 上的资源限制之间存在密切的关系。具体来说,Flink 任务的资源需求会受到 YARN 配置的资源限制的影响。下面通过一个具体的例子来说明这种关系。

示例场景

假设你有一个 YARN 集群,配置如下:

<!-- YARN 配置 -->
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>8192</value>
</property>
<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>8</value>
</property>

<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value>
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>6144</value>
</property>

<property>
  <name>yarn.scheduler.minimum-allocation-vcores</name>
  <value>1</value>
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-vcores</name>
  <value>4</value>
</property>

Flink 任务配置

假设你提交一个 Flink 任务,配置如下:

flink run -m yarn-cluster -yn 2 -ytm 3072 -yjm 1024 -ys 2 -c com.example.MyFlinkJob /path/to/my-flink-job.jar
  • -yn 2:指定 YARN 集群中启动 2 个 TaskManager。

  • -ytm 3072:每个 TaskManager 分配 3072 MB 内存。

  • -yjm 1024:JobManager 分配 1024 MB 内存。

  • -ys 2:每个 TaskManager 分配 2 个 CPU 核。

资源分配关系

1. 内存分配
  • YARN 配置

    • yarn.nodemanager.resource.memory-mb:每个节点管理器最大可用内存为 8192 MB(8 GB)。

    • yarn.scheduler.minimum-allocation-mb:每个容器最小分配内存为 1024 MB(1 GB)。

    • yarn.scheduler.maximum-allocation-mb:每个容器最大分配内存为 6144 MB(6 GB)。

  • Flink 任务配置

    • JobManager 内存:1024 MB。

    • 每个 TaskManager 内存:3072 MB。

    • 总共需要的内存:1024 MB (JobManager) + 2 * 3072 MB (TaskManagers) = 7168 MB。

  • 关系

    • Flink 任务总共需要 7168 MB 内存,这小于 YARN 配置的 yarn.nodemanager.resource.memory-mb(8192 MB),因此单个节点管理器可以满足 Flink 任务的内存需求。

    • 每个 TaskManager 请求的内存为 3072 MB,这小于 YARN 的 


原文地址:https://blog.csdn.net/w2009211777/article/details/144063776

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!