Hadoop Yarn 核心调优参数

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 这是一个关于测试集群环境的配置说明,包括3台服务器(master, slave1, slave2)运行CentOS 7.5,每台有4核CPU和4GB内存。集群使用Hadoop 3.1.3,JDK1.8。Yarn核心配置涉及调度器选择、ResourceManager线程数、节点检测、逻辑处理器使用、核心转换乘数、NodeManager内存和CPU设置,以及容器的内存和CPU限制。配置完成后,需要重启Hadoop并检查yarn配置。

@[toc]

测试集群环境说明

服务器介绍

机器名称 内网IP 内存 CPU 承载节点
master 192.168.10.10 4 4 NodeManager、DataNode、NameNode
slave1 192.168.10.11 4 4 NodeManager、DataNode、ResourceManager
slave2 192.168.10.12 4 4 NodeManager、DataNode、SecondaryNameNode

操作系统均为:CentOS 7.5

组件介绍

  • jdk1.8
  • hadoop 3.1.3

Yarn 核心配置参数

1. 调度器选择

这里选用默认调度器(容量调度器)。

<property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

2. ResourceManager 调度器处理线程数量设置

ResourceManager 处理调度器请求的线程数量,默认 50

如果提交的任务数大于 50,可以增加该值,但是不能超过总线程数量。

在当前测试环境中,我们共配置了 3 台服务器,4 核 CPU,共有 12 线程,但时不能直接设置为 12,而应该设置为 8(三分之二),剩余资源保障其它应用程序的正常运行。

<property>
    <name>yarn.resourcemanager.scheduler.client.thread-count</name>
    <value>8</value>
</property>

3. 是否启用节点功能的自动检测设置

顾名思义,就是自动检测当前系统配置,自动进行资源配置,默认为 false

在该系统内没有其它应用程序运行的情况下,可以开启该参数。

<property>
    <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
    <value>false</value>
</property>

4. 是否将逻辑处理器当作物理核心处理器

指定逻辑处理器(虚拟核数)是否应该被视为独立的核心资源,默认为 false

物理核心处理器可以给集群带来更强的处理性能,而逻辑处理器能够提供更多的并发。

<property>
    <name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
    <value>false</value>
</property>

5. 设置物理核心到虚拟核心的转换乘数

默认情况下,乘数为 1.0,这意味着一个物理核心会被视为一个虚拟核心。

如果希望将一个物理核心映射为多个虚拟核心,可以将这个值调整为大于 1 的值。

可以根据应用程序需求、资源利用率以及性能测试结果来决定是否调整这个乘数。

<property>
    <name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
    <value>1.0</value>
</property>

6. 设置 NodeManager 使用的内存量

用于指定每个 NodeManager 节点可以使用的内存量,以兆字节(MB)为单位,默认 8G,修改为单台机器对应的内存量。

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value>
</property>

7. 设置 NodeManager 节点虚拟核心数量

用于指定每个 NodeManager 节点可以使用的虚拟核心数量(vCores),默认为 8 个,修改为单台机器对应的物理核心数量。

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

8. 设置每个容器的最小与最大内存

用于设置每个容器(task或应用程序的运行实例)所能够分配到的最小与最大内存量。

最小内存默认为 1024 MB;

最大内存默认为 8192 MB,推荐设置为系统最大内存的一半;

<!-- 容器最小内存-->
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>1024</value>
</property>

<!-- 容器最大内存-->
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>2048</value>
</property>

9. 设置每个容器的最小与最大虚拟CPU核心

设置每个容器(任务或应用程序的运行实例)所能够分配到的最小与最大 CPU 虚拟核心数(vCores)。

最小虚拟核心数默认为 1 个;

最大虚拟核心数默认为 4 个,推荐设置为系统最大物理核心的一半;

<!-- 容器最小虚拟核心数 -->
<property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
</property>

<!-- 容器最大虚拟核心数 -->
<property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>2</value>
</property>

10. 是否开启虚拟内存检查

用于指定是否启用虚拟内存检查来限制每个容器使用的虚拟内存量。

默认为 true,NodeManager 将会在分配容器资源时,考虑每个容器使用的虚拟内存量。

如果一个容器的虚拟内存使用量超过了预先配置的限制,NodeManager 会采取措施来处理这种情况,通常是终止或杀死该容器。

在这里我调整为 false

<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

11. 设置虚拟内存与物理内存比例

用于设置虚拟内存与物理内存之间的比率,默认为 2.1 倍。

这个参数的目的是限制应用程序可以使用的虚拟内存量,以避免某个应用程序无限制地占用虚拟内存资源,导致其他任务和应用程序受影响。

<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value>
</property>

配置信息查看

完成配置后,分发 yarn 文件,重启 Hadoop,查看 yarn 配置信息:

image.png

相关文章
|
7天前
|
分布式计算 资源调度 Hadoop
大数据Hadoop集群部署与调优讨论
大数据Hadoop集群部署与调优讨论
|
29天前
|
SQL 分布式计算 资源调度
Hadoop Yarn 配置多队列的容量调度器
配置Hadoop多队列容量调度器,编辑`capacity-scheduler.xml`,新增`hive`队列,`default`队列占总内存40%,最大60%;`hive`队列占60%,最大80%。配置包括队列容量、用户权限和应用生存时间等,配置后使用`yarn rmadmin -refreshQueues`刷新队列,无需重启集群。多队列配置可在Yarn WEB界面查看。
|
29天前
|
分布式计算 Hadoop Java
Hadoop MapReduce 调优参数
对于 Hadoop v3.1.3,针对三台4核4G服务器的MapReduce调优参数包括:`mapreduce.reduce.shuffle.parallelcopies`设为10以加速Shuffle,`mapreduce.reduce.shuffle.input.buffer.percent`和`mapreduce.reduce.shuffle.merge.percent`分别设为0.8以减少磁盘IO。
|
9天前
|
资源调度 分布式计算 Hadoop
实时计算 Flink版产品使用问题之yarn session模式中启动的任务链接是http IP,想把IP映射为主机hadoop,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
存储 分布式计算 资源调度
Hadoop参数众多
【5月更文挑战第8天】Hadoop参数众多
22 4
|
9月前
|
分布式计算 资源调度 监控
Hadoop学习笔记(四)之YARN
Hadoop学习笔记(四)之YARN
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
75 9
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
【4月更文挑战第4天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
45 4
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop【环境搭建 02】【hadoop-3.1.3 单机版YARN】(配置、启动及验证)
Hadoop【环境搭建 02】【hadoop-3.1.3 单机版YARN】(配置、启动及验证)
31 0
|
1月前
|
资源调度 分布式计算 算法
【Hadoop Yarn】Hadoop Yarn 基于权重的调度算法
【4月更文挑战第7天】【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法

相关实验场景

更多