YARN 优化

YARN 优化

yarn.app.mapreduce.am.resource.mb
ApplicationMaster的container占用的内存大小,可适当调低
mapreduce.map.memory.mb/mapreduce.reduce.memory.mb
作业的每个 Map/Reduce任务分配的物理内存量,参数大于最小容器内存(yarn.scheduler.minimum-allocation-mb),两个参数配置的值设置一样即可
mapreduce.map.java.opts.max.heap/mapreduce.reduce.java.opts.max.heap
每个Map/Reduce的JVM启动所占用的内存,正常此参数小于等于Map/Reduce申请的内存(mapreduce.map.memory.mb/mapreduce.reduce.memory.mb)的85%,因为map任务里不一定只跑java,比如hadoop streaming程序
io.file.buffer.size
SequenceFiles 读取和写入操作的缓存区大小,还有map的输出都用到了这个缓冲区容量, 可减少 I/O 次数。建议设定为 64KB 到 128KB mapreduce.task.io.sort.factor
Reduce Task中合并小文件时,一次合并的文件数据,每次合并的时候选择最小的前N个进行合并,此参数正常与mapreduce.task.io.sort.mb一起配置
mapreduce.task.io.sort.mb
Map Task缓冲区排序文件时要使用的内存缓冲总量,如果mapreduce.task.io.sort.factor设置了较大值,此参数也应相应调大
io.sort.spill.percent mapreduce.task.io.sort.mb的阈值,默认是80%,当buffer中的数据达到这个阈值,后台线程会起来对buffer中已有的数据进行排序,然后写入磁盘 **yarn.nodemanager.resource.memory-mb **
NodeManager节点上可使用的物理内存总量,默认是8192(MB),根据节点所能分配的最大的内存进行分配即可(扣除其他服务内存、系统内存等) **yarn.scheduler.minimum-allocation-mb **
容器可以请求的最小物理内存量,此参数小于等于作业分配的Map\Reduce内存量(mapreduce.map.memory.mb/mapreduce.reduce.memory.mb) **yarn.scheduler.increment-allocation-mb **
内存规整化单位,为容器申请内存增量,最后内存请求数量将四舍五入为该数字最接近的倍数,比如使用 Fair Scheduler,Container请求资源是1.5GB,容量增量为1G,则将被调度器规整化为ceiling(1.5 GB / 1GB) * 1G ≈ 2GB(公式:(请求资源 / 容量增量)*容量增量 ) yarn.scheduler.maximum-allocation-mb
单个任务可申请的最大物理内存量(默认是8192(MB))。默认情况下,YARN采用了线程监控的方法判断任务是否超量使用内存,一旦发现超量,则直接将其杀死
DRF: Dominant Resource Fairness,根据CPU和内存公平调度资源。CDH动态资源池默认采用的DRF计划策略。简单的理解就是内存不够的时候,多余的CPU就不会分配任务了,就让他空着;CPU不够的时候,多出来的内存也不会再启动任务了。

你可能感兴趣的:(大数据)