yarn参数调节
scheduler设置:
单个容器(container)可申请的最小与最大内存,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
单个任务可申请的最小/最大虚拟CPU个数(运行MapRedce作业时,每个Task最少可申请虚拟CPU个数,最多可申请的虚拟CPU个数)
yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-vcores
nodemanager设置:
每个节点可用的最大物理(虚拟)内存,默认是8192MB(2.1)。此数值可以用于计算container最大数目
yarn.nodemanager.resource.memory-mb
yarn.nodemanager.vmem-pmem-ratio
NodeManager总的可用CPU个数
yarn.nodemanager.resource.cpu-vcores
启动一个线程检查每个任务正使用的物理(虚拟)内存量,如果任务超出分配值,则直接将其杀掉,默认是true
yarn.nodemanager.pmem-check-enabled
yarn.nodemanager.vmem-check-enabled
CDH Yarn资源队列划分管理
yarn.scheduler.fair.user-as-default-queue :参数设置为false后,没有创建资源队列的用户,提交任务时,任务最重提交到默认队列(如果勾了这个,切没有创建对应用户名的资源池,任务直接提交失败)
yarn.scheduler.fair.allow-undeclared-pools : 参数设置为ture后,应用程序在执行时会创建权重为1的对应用户名的资源池,这样起不到资源管控的效果,所以这里我们要设置为false
Task 可使用的内存上限(单位:MB)及container的最大值,默认为 1024。如果Task 实际使用的资源量超过该值,则会被强制杀死
mapreduce.(map)reduce.memory.mb
task 可用的最多 cpu core 数目, 默认值: 1
mapreduce.map(reduce).cpu.vcores
java jvm 堆内存非堆内存的调整
mapreduce.reduce.java.opts='-Xmx5120m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/tmp/@taskid@.gc -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/@taskid@.dump'
这个参数是指reduce每次fetceh数据的时候,达到reduce jvm内存的百分之多少的时候,就把数据写入到磁盘;默认是0.25 可以在代码里面设置
mapreduce.reduce.shuffle.memory.limit.percent=0.1
reduce进程启动数据copy线程(Fetcher)最大的时间段
mapreduce.reduce.shuffle.read.timeout(default180000秒)
shuffile在reduce内存中的数据最多使用内存量为:JVM的heapsize的70%
mapreduce.reduce.shuffle.input.buffer.percent(default 0.7f )
内存到磁盘merge的限度阈值
mapreduce.reduce.shuffle.merge.percent(default0.66)
保存map输出文件的堆内存比例
mapreduce.reduce.input.buffer.percent