当前位置: 首页 > news >正文

总结: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 的 

http://www.lryc.cn/news/492239.html

相关文章:

  • Python学习34天
  • 深入浅出 WebSocket:构建实时数据大屏的高级实践
  • 三开关VUE组件
  • SpringCloud+SpringCloudAlibaba学习笔记
  • 牛客小白月赛105(A~E)
  • OSPF协议整理
  • Java中的多线程
  • 什么是聚簇索引、非聚簇索引、回表查询
  • 探索 Spring 框架核心组件:构建强大 Java 应用的基石
  • Android 13 Aosp 默认允许应用动态权限
  • 【C++知识总结1】c++第一篇,简单了解一下命名空间是什么
  • 从0开始深度学习(32)——循环神经网络的从零开始实现
  • GitLab使用操作v1.0
  • cuda conda yolov11 环境搭建
  • 解决SpringBoot连接Websocket报:请求路径 404 No static resource websocket.
  • element-plus的组件数据配置化封装 - table
  • 【二维动态规划:交错字符串】
  • goframe开发一个企业网站 MongoDB 完整工具包18
  • 在vue中,根据后端接口返回的文件流实现word文件弹窗预览
  • 动态规划之背包问题
  • 【Python】 深入理解Python的单元测试:用unittest和pytest进行测试驱动开发
  • Java集合1.0
  • Leetcode 336 回文对
  • 实现一个可配置的TCP设备模拟器,支持交互和解析配置
  • 算法的空间复杂度
  • 自定义协议
  • 在 Taro 中实现系统主题适配:亮/暗模式
  • autogen框架中使用chatglm4模型实现react
  • 读《Effective Java》笔记 - 条目9
  • 【软件入门】Git快速入门