参考文档:
https://zhuanlan.zhihu.com/p/69703968
每节点管理器总的cpu核数 ( 整个yarn资源池核数=node数 * 此参数
yarn.nodemanager.resource.cpu-vcores
一般设置等于:节点cpu总核数-节点运行的应用服务数(一般每个服务一个,系统给2个,6个左右)
ApplicationMaster 分配的CPU 核数
yarn.app.mapreduce.am.resource.cpu-vcores
Map 任务分配的CPU核数
mapreduce.map.cpu.vcores
容器最小分配CPU数,默认是1
yarn.scheduler.minimum-allocation-vcores
容器增加CPU,单次可以增量
yarn.scheduler.increment-allocation-vcores。
容器最大可申请 CPU 核数。默认值1,修改为2个。匹配FLINK task manager分配的slot即vcore默认为2
yarn.scheduler.maximum-allocation-vcores
每节点管理器 总的内存数量 整个yarn资源池=node数*此参数
yarn.nodemanager.resource.memory-mb
一般20%留给系统服务 , 80%左右给yarn
ApplicationMaster分配的内存大小
yarn.app.mapreduce.am.resource.mb 1024
单容器最小分配内存量
yarn.scheduler.minimum-allocation-mb 1024
没有特殊,此参数指定容器运行的最少分配的内存。 MAP/reduce参数小于此值,以此值为准,按增量单位补。
单各容器最大分配内存量
yarn.scheduler.maximum-allocation-mb = 10355
此值可以设置很大(不超过节点内存即可),作为限制单个容器的最大内存使用量。
注:应用在运行申请内存时不能超过最大值。 大部分情况下 mapreduce.reduce.memory.mb 和yarn.scheduler.minimum-allocation-mb来确定分配大小。
如果在HIVE ETL 头部或MapReduce代码中,也可以动态设定任务的申请资源,但最大不能超过此值。
eg:hive ETL set mapreduce.reduce.memory.mb
Hive提供三种可以改变环境变量的方法,分别是:(1)、修改${HIVE_HOME}/conf/hive-site.xml配置文件;(2)、命令行参数;(3)、在已经进入cli时进行参数声明(优先级最高)。
上述3中设置参数优先级依次增高。
容器内存不够时,每次增量
yarn.scheduler.increment-allocation-mb = 512
MapReduce参数:
mapreduce.reduce.memory.mb (CPU: mapreduce.reduce.cpu.vcores)
此参数定义了 reduce/map 容器分配的内存。此值大于mapreduce.reduce.java.opts。
实际在生产上给map/reduce分配多少内存,还要依赖yarn容器设置,如 yarn.schduler.minimum-allocation-mb相关参数。
mapreduce.reduce.java.opts=-Xmx2048m
此参数设置JVM使用的最大堆内存。
注意reduce/map任务是运行在容器中的,需要预留部分资源给JVM本身机制使用。使用的堆内存一般配置此参数为 mapreduce.reduce.memory.mb 的0.75。CDH最新版本默认是0.8
注:CDH5.5版本以上,此参数没有明确配置。 mapreduce.map.java.opts, mapreduce.reduce.java.opts, yarn.app.mapreduce.am.command-opts会基于container堆内存的比例进行自动配置。如下参数定义了上述两个参数的比例:
CDH 默认情况下使用的时 公平调度器 分配资源。
Hadoop用户默认在在队列root.users下的root.users.hadoop子队列。
注意该队列有写默认限制, 比如AM分配的最大内存百分比,默认值50%。 由于此公平队列可以浮动,最大可占总集群内存100%,则AM内存最大为总内存 3G*50%=1.5G
具体可以看yarn WEB UI:
其它参数
Application Master java最大堆栈 787.69
Reduce 任务内存
Map 任务最大堆栈 0 ,
Reduce任务最大堆栈0
堆与容器大小之比0.8
mapreduce.job.heap.memory-mb.ratio