map端的调优属性: | |||
属性名称 | 类型 | 默认值 | 说明 |
mapreduce.task.io.sort.mb | int | 100 | 排序map输出时所使用的内存缓冲区的大小,已兆字节为单位 |
mapreduce.map.sort.spill.percent | float | 0.80 | map输出内存缓冲和用来开始磁盘溢出写过程的记录边界索引,这两者使用比例的阀值 |
mapreduce.task.io.sort.fator | int | 10 | 排序文件时。一次最多合并的流数。这个属性也在reduce中使用,将此值增加到100是很常见的 |
mapreduce.mao.combine.minspills | int | 3 | 运行combiner所需的最小溢出文件数(如果已经指定combiner) |
mapreduce.map.output.compress | boolean | false | 是否压缩map输出 |
mapreduce.map.output.compress.codec | Class name | org.apache.hadoop.io.compress.DefaultCodec | 用于map输出的压缩编码器 |
mapreduce.shuffle.max.threads | int | 0 | 每个节点管理器的工作线程数,用于将map输出到reduce。这是集群范围的设置,不能由单个作业设置。0表示使用Netty默认值,即两倍于可用的处理器 |
属性名称 | 类型 | 默认值 | 描述 |
mapreduce.reduce.shuffle.parallelcopies | int | 5 | 用于把map输出复制到reducer的线程数 |
mapreduce.reduce.shuffle.maxfetchfaiures | int | 10 | 在声明失败之前,reducer获取一个map输出所花的最大时间 |
mapreduce.task.io.sort.factor | int | 10 | 排序文件时一次最多合并的流的数量,这个属性也在map端使用 |
mapreduce.reduce.shuffle.input.buffer.percent | float | 0.70 | 在shuffle的复制阶段,分配给map输出的缓冲区占堆空间的百分比 |
mapreduce.reduce.shuffle.input.merge.percent | float | 0.66 | map输出缓冲区(由mapred.job.shuffle.input.buffer.percent定义)的阀值使用比例,用于启动合并输出和磁盘溢出写的过程 |
mapreduce.reduce.merge.in.mem.threshold | int | 1000 | 启动合并输出和磁盘溢出写过程的map输出的阀值数,0或更小的数意味着没用阀值限制,溢出写行为由mapreduce.reduce.shuffle.merge.percent单独控制 |
mapreduce.reduce.input.buffer.percent | float | 0.0 | 在reduce过程中,在内存中保存map输出的空间占整个堆空间的比例。reduce阶段开始时,内存中的map输出大小不能大于这个值。默认情况下,在reduce任务开始之前,所有map输出都合并到磁盘上,以便reducer提供尽可能多的内存。然而,如果reducer需要的内存较少,可以增加此值来最小化访问磁盘的次数。 |