博客
关于我
CDH集群之YARN性能调优
阅读量:797 次
发布时间:2023-04-04

本文共 3967 字,大约阅读时间需要 13 分钟。

CDH集群YARN调优配置指南

本文将围绕CDH集群的YARN调优配置进行详细讨论,重点涵盖CPU和内存的优化配置。YARN作为Hadoop的资源管理框架,以容器化的形式分配资源,任务在容器内部执行。本文将从集群配置、YARN配置、MapReduce配置等多个方面展开分析。

集群配置

工作主机配置

根据提供的主机配置参数表,每台主机配置如下:

主机 组件 数量 大小 总计 描述
RAM 256G 256G 内存大小
CPU 4 6 48 总CPU核数
HyperThreading CPU YES 超线程CPU,使操作系统认为处理器的核心数是实际核心数的2倍
网络 2 1G 2G 网络带宽

工作主机安装组件配置

根据每台主机的资源配置,服务分配如下表所示:

服务 类别 CPU核数 内存(MB) 描述
操作系统 Overhead 1 8192 为操作系统分配1核8G内存
其它服务 Overhead 0 0 非CDH集群、非操作系统占用的资源
Cloudera Manager agent Overhead 1 1024 分配1核1G
HDFS DataNode CDH 1 1024 默认1核1G
YARN NodeManager CDH 1 1024 默认1核1G
Impala daemon CDH 0 0 可选服务,建议至少为Impala daemon分配16G内存
Hbase RegionServer CDH 0 0 可选服务,建议12~16G内存
Solr Server CDH 0 0 可选服务,最低1G内存
Kudu Server CDH 0 0 可选服务,kudu Tablet server最低1G内存
Available Container Resources 44 250880 剩余分配给YARN的container

container资源分配参数设置为:

-
Physical Cores to Vcores Multiplier:每个container的CPU core的并发线程数,本文设置为1-
YARN Available Vcores:YARN可用的CPU核数=Available Container Resources * Physical Cores to Vcores Multiplier,即为44-
YARN Available Memory:250880

集群大小

集群的工作节点个数为10台。

YARN配置

YARN NodeManager配置属性

配置参数 描述
yarn.nodemanager.resource.cpu-vcores 44 yarn 的nodemanager分配44核,每台节点剩余的CPU
yarn.nodemanager.resource.memory-mb 250800 分配的内存大小,每台节点剩余的内存

YARN container配置

配置参数 描述
yarn.scheduler.minimum-allocation-vcores 1 分配给container的最小vcore个数
yarn.scheduler.maximum-allocation-vcores 44 分配给container的最大vcore数
yarn.scheduler.increment-allocation-vcores 1 容器虚拟CPU内核增量
配置参数 描述
yarn.scheduler.minimum-allocation-mb 1024 分配给container的最小内存大小,为1G
yarn.scheduler.maximum-allocation-mb 250880 分配给container的最大内存,等于245G,即为每台节点剩余的最大内存
yarn.scheduler.increment-allocation-mb 512 容器内存增量,默认512M

验证YARN配置

登录YARN的resourcemanager的WEBUI:http://

:8088/,验证'Memory Total'与'Vcores Total',如果节点都正常,那么Vcores Total应该为440,Memory应该为2450G,即250800/1024*10

MapReduce配置

ApplicationMaster配置

配置参数 取  值 描述
yarn.app.mapreduce.am.resource.cpu-vcores 1 ApplicationMaster 的虚拟CPU内核数
yarn.app.mapreduce.am.resource.mb 1024 ApplicationMaster的物理内存要求(MiB)
yarn.app.mapreduce.am.command-opts 800 传递到 MapReduce ApplicationMaster 的 Java 命令行参数,AM Java heap 大小,为800M

Map task配置

配置参数 描述
mapreduce.map.cpu.vcores 1 分配给map task的vcore数
mapreduce.map.memory.mb 1024 分配给map task的内存数,1G
mapreduce.task.io.sort.mb 400 I/O 排序内存缓冲 (MiB),默认256M,一般不用修改

Reduce task配置

配置参数 描述
mapreduce.reduce.cpu.vcores 1 分配给reduce task的vcore数
mapreduce.reduce.memory.mb 1024 分配给reduce task的内存数,1G

MapReduce配置合理性检查

  • Application Master配置的合理性检查

  • yarn.scheduler.minimum-allocation-vcores <=  yarn.app.mapreduce.am.resource.cpu-vcores<= yarn-scheduler.maximum-allocation-vcores

  • yarn.scheduler.minimum-allocation-mb <= yarn.app.mapreduce.am.resource.cpu-vcores <= yarn.scheduler.maximum-allocation-mb  

  • Java Heap大小是container大小的75%~90%: 太低会造成资源浪费, 太高会造成OOM
  • Reduce Task配置的合理性检查

  • yarn.scheduler.minimum-allocation-vcores <= mapreduce.map.cpu.vcores <= yarn-scheduler.maximum-allocation-vcores

  • yarn.scheduler.minimum-allocation-mb <= mapreduce.map.memory.mb <= yarn.scheduler.maximum-allocation-mb

  • Spill/Sort内存为每个task堆内存的40%~60%

YARN和MapReduce配置参数总结

YARN/MapReduce参数配置 描述
yarn.nodemanager.resource.cpu-vcores 分配给container的虚拟cpu数
yarn.nodemanager.resource.memory-mb 分配给container的内存大小
yarn.scheduler.minimum-allocation-vcores 分配给container的最小虚拟cpu数
yarn.scheduler.maximum-allocation-vcores 分配给container的最大虚拟cpu数
yarn.scheduler.increment-allocation-vcores 分配给container的递增虚拟cpu数
yarn.scheduler.minimum-allocation-mb 分配给container的最小内存大小
yarn.scheduler.maximum-allocation-mb 分配给container的最大内存
yarn.scheduler.increment-allocation-mb 分配给container的递增内存大小
yarn.app.mapreduce.am.resource.cpu-vcores ApplicationMaste的虚拟cpu数
yarn.app.mapreduce.am.resource.mb ApplicationMaste的内存大小
mapreduce.map.cpu.vcores map task的虚拟CPU数
mapreduce.map.memory.mb map task的内存大小
mapreduce.reduce.cpu.vcores reduce task的虚拟cpu数
mapreduce.reduce.memory.mb reduce task的内存大小
mapreduce.task.io.sort.mb I/O排序内存大小

note:在CDH5.5或者更高版本中,参数mapreduce.map.java.opts, mapreduce.reduce.java.opts, yarn.app.mapreduce.am.command-opts会基于container堆内存的比例进行自动配置

转载地址:http://bnrfk.baihongyu.com/

你可能感兴趣的文章
mysql /*! 50100 ... */ 条件编译
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>