博客
关于我
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 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>
mysql 表的操作
查看>>
mysql 视图,视图更新删除
查看>>
MySQL 触发器
查看>>
mysql 让所有IP访问数据库
查看>>
mysql 记录的增删改查
查看>>