本文共 3967 字,大约阅读时间需要 13 分钟。
本文将围绕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.nodemanager.resource.cpu-vcores | 44 | yarn 的nodemanager分配44核,每台节点剩余的CPU |
yarn.nodemanager.resource.memory-mb | 250800 | 分配的内存大小,每台节点剩余的内存 |
配置参数 | 值 | 描述 |
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的resourcemanager的WEBUI:http://
配置参数 | 取 值 | 描述 |
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 |
配置参数 | 值 | 描述 |
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,一般不用修改 |
配置参数 | 值 | 描述 |
mapreduce.reduce.cpu.vcores | 1 | 分配给reduce task的vcore数 |
mapreduce.reduce.memory.mb | 1024 | 分配给reduce task的内存数,1G |
Application Master配置的合理性检查
Reduce Task配置的合理性检查
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/