MapReduce基本调优策略

本文介绍了Hadoop中Reduce任务的数量设置方法及其对性能的影响,并详细讲解了如何优化Map任务的输出,包括压缩配置、shuffle参数调整等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置reduce数量

默认情况下,一个块对应一个map。
默认情况下只有一个reduce。
设置reduce个数:

 job.setNumReduceTasks(2);   //设置reduce的个数
或者
conf.set("mapreduce.job.reduces", "2");  //设置reduce的个数

实际中reduce的个数要进行不断的测试获取一个趋于平稳的值。

map任务的输出压缩

 Configuration conf = getConf();
conf.set("mapreduce.map.output.compress", "true");//设置开启压缩,默认为false
conf.set("mapreduce.map.output.compress.codec", "org.apache.hadoop.io.compress.Lz4Codec");//设置压缩算法,CompressionCodec为压缩算法的父类
//        CompressionCodec

shuffle参数的设置

job.setPartitionerClass(cls);     //设置分区
job.setSortComparatorClass(cls);    //设置排序
job.setCombinerClass(cls);          //设置combiner
job.setGroupingComparatorClass(cls);    //设置group

设置排序因子:
map输出的结果在本地多个小文件,排序因子就是设置当小文件数量达到多少的时候进行文件的合并。

mapreduce.task.io.sort.factor 默认10

设置内存缓冲区:
map输出数据的时候先将数据放在内存缓冲区,此参数设置内存缓冲区的大小,当不需要将数据先放内存,而是直接写到磁盘,可以将这个值调小

mapreduce.task.io.sort.mb 默认100M

设置内存缓冲使用百分比:
map输出数据的时候先将数据放在内存缓冲区,当缓冲区的数据量达到总数量的百分多少的时候将数据写入磁盘,这个参数就是用来控制数据写出时的百分比。

mapreduce.map.sort.spill.percent 默认0.8

设置每个map任务和每个reduce任务运行时使用的虚拟CPU数量:

mapreduce.map.cpu.vcores  默认1
mapreduce.reduce.cpu.vcores  默认1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值