内存、cpu优化
****************************map默认MapTask内存上限1024MBmapreduce.map.memory.mb 控制MapTask堆内存大小mapreduce.map.java.opts默认MapTask的CPU核数1mapreduce.map.cpu.vcores ****************************reduce默认ReduceTask内存上限1024MBmapreduce.reduce.memory.mb 控制ReduceTask堆内存大小mapreduce.reduce.java.opts默认ReduceTask的CPU核数1个mapreduce.reduce.cpu.vcores当MapTask完成的比 例达到该值后才会为ReduceTask申请资源。默认是0.05mapreduce.job.reduce.slowstart.completedmaps如果一个Task在一定时间内没有任何进入, 即不会读取新的数据,也没有输出数据,则认为该Task处于Block状态, 可能是卡住了,也许永远会卡住,为了防止因为用户程序永远Block住 不退出,则强制设置了一个该超时时间(单位毫秒),默认是600000 (10分钟)。如果你的程序对每条输入数据的处理时间过长,建议将 该参数调大。mapreduce.task.timeout
spill
mapred-site.xml<!-- 环形缓冲区大小,默认100m 改成200M--> <property><name>mapreduce.task.io.sort.mb</name> <value>100</value></property><!-- 环形缓冲区溢写阈值,默认0.8 改为0.9--> <property><name>mapreduce.map.sort.spill.percent</name><value>0.80</value></property>
merge
mapred-site.xml
<!-- merge每次合并多少个spill文件,默认10个 改为20-->
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>10</value>
</property>
combiner
不影响业务前提下,在map端聚合
reduce拉取
mapred-site.xml
每个Reduce去Map 中拉取数据的并行数,默认值是5。可以提高到10
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>5</value>
</property>
<!-- Buffer 大小占 Reduce 可用内存的比例,默认值 0.7 -->
<property>
<name>mapreduce.reduce.shuffle.input.buffer.percent</name>
<value>0.70</value>
</property>
<!-- Buffer 中的数据达到多少比例开始写入磁盘,默认值 0.66。 -->
<property>
<name>mapreduce.reduce.shuffle.merge.percent</name>
<value>0.66</value>
</property>
压缩优化

