MapRedcue 任务环境优化
mapred.child.java.opts
每一个map或是reduce进程都是一个task,都会对应启动一个JVM
默认: -Xmx200m
取值范围以及影响
mapreduce.task.io.sort.mb 的 2倍值
单节点内存 / (mapreduce.tasktracker.map.tasks.maximum + mapreduce.tasktracker.reduce.tasks.maximum)
mapreduce.map.memory.mb |mapreduce.reduce.memory.mb 会替换此值
mapreduce.map.java.opts
运行 map 任务的 JVM 环境内存,需要根据具体环境设置
计算公式 : (dfs.blocksize x 4)
设置 -Xmx512M
mapreduce.reduce.java.opts
运行 reduce 任务的 JVM 环境内存,需要根据具体环境设置
计算公式 : (dfs.blocksize x 5)
mapreduce.map.java.opts 的 2 倍
设置 -Xmx1024M
mapreduce.job.reduce.slowstart.completedmaps
map task完成数目达到5%时,开始启动reduce task
默认 0.05
mapreduce.map.memory.mb
一个Map Task可使用的资源上限(单位:MB),同 mapreduce.map.java.opts
默认 1024
取值范围
一个 Map 对应一个块,一个 Map . 计算公式 : (dfs.blocksize x 4) = 512
mapreduce.reduce.memory.mb
一个Reduce Task可使用的资源上限(单位:MB),同 mapreduce.reduce.java.opts
默认 1024
取值范围
dfs.blocksize x 8 = 1024
集群节点运行 MAP | Reduce 数
mapreduce.tasktracker.map.tasks.maximum
(集群配置)一个节点同时运行在 TaskTracker 上的最大 map task 数
集群总运行 MAP 数 = Node x mapreduce.tasktracker.map.tasks.maximum
默认 2
取值范围
根据 mapreduce.map.memory.mb 和系统可用内存,计算得得出
mapreduce.tasktracker.reduce.tasks.maximum
(集群配置)一个节同时运行在 TaskTracker 上的最大 reduce task 数
集群总运行 MAP 数 = Node x mapreduce.tasktracker.reduce.tasks.maximum
默认 2
计算公式
0.95 * ( node(计算节点) * cpu 核数)
当 map 结束,reduce 就能立即启动
1.75 * ( node(计算节点) * cpu 核数)
较快的节点,第一轮 reduce 结束后,可以开始第二轮的 reduce ,从而提高负载均衡
根据 mapreduce.reduce.memory.mb 和系统可用内存,计算得得出
mapreduce.job.maps
(本地参数)覆盖值 mapreduce.tasktracker.map.tasks.maximum
默认 2
设置成 -1 ,不限制
mapreduce.job.reduces
(本地参数)覆盖值 mapreduce.tasktracker.reduce.tasks.maximum
默认 1
设置成 -1 ,不限制
小作业优化
mapreduce.job.ubertask.enable
小作业优化,把小作业(application )的 ApplicationMaster、 Map 、 Reduce 的 Task 放在一个节点的容器中执行
默认 false
设置 true
mapreduce.job.ubertask.maxmaps
小作业 Map 的阀值,对于 app,如果 map 数量不超过,这个阀值,就使用小作业模式运行
默认 9
取值范围
根据 mapreduce.tasktracker.map.tasks.maximum +- 1 左右的值
mapreduce.job.ubertask.maxreduces
小作业 Reduce 的阀值,对于 application,如果 Reduce 数量不超过,这个阀值,就使用小作业模式运行
目前只支持 1 ,设置成 1
mapreduce.map.cpu.vcores
指定每个 map 任务需要的虚拟 CPU 个数
mapreduce.reduce.cpu.vcores
指定每个 reduce 任务需要的虚拟CPU个数
默认 1
mapreduce.job.jvm.numtasks
是否重用 JVM
默认 1
设置为 -1 表示重用
mapreduce.map.speculative
map 推测
默认 true
设置 true
mapreduce.reduce.speculative
reduce 推测
默认 true
设置 true
mapreduce.input.fileinputformat.split.maxsize
设置 一个 Map 最多同时处理的文件总数大小,HDFS n 个文件相加后的 size ,根据设定值,决定启用几个 Map 任务
默认 256000000
取值范围
mapreduce.map.memory.mb 同样大小,转换成字节