博客
关于我
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:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>