Map端调优参数
|
类型 | 默认值 | 说明 | |
io.sort.mb | int | 100 | 排序map输出时所使用的内存缓冲区大小,以M为单位。当节点内存较大时,可调高该参数,以减少磁盘写入次数。 | |
io.sort.record.percent | float | 0.05 |
|
|
io.sort.spill.percent | float | 0.80 | map输出开始写磁盘的阈值。 | |
io.sort.factor | int | 10 | map输出排序时,一次最多合并的流数。该属性在reduce中也用到。 | |
min.num.spills.for.combine | int | 3 | 运行combiner所需的最少溢出文件数(指定combiner时,才生效)。默认为3,即当map的spill的个数大于或等于3时,则会在map的merge操作之前,对各spill执行combine操作,以减少写入到磁盘的文件的数量。 | |
mapred.compress.map.output | Boolean | false | 是否压缩map输出 | |
mapred.map.output.compression.codec | Class name | org.apache.hadoop.io.
compress.DefaultCodec |
用于map输出压缩编解码器 | |
tasktracker.http.threads | int | 40 | 每个tasktracker的工作线程数,用于将map输出到reducer。该属性为集群范围的设置,不能由单个作业设置 | |
mapred.map.max.attempts | int | 4 | map任务失败后,重新尝试执行次数。默认值为4,如果任务map任务失败次数大于4,整个计算任务都会失败。 | |
mapred.max.map.failures.percent | 不触发作业失败的情况下,允许map任务失败的最大百分比 | |||
mapred.map.tasks.speculative.execution | boolean | true | 是否启动map任务的推测执行。默认为开启,当某个map任务运算时间长于平均map时间后,hadoop将启动一个新的map实例。 |
Reduce端调优参数
属性名称 | 类型 | 默认值 | 说明 |
mapred.reduce.parallel.copies | int | 5 | 用于把map输出复制到reduce的线程数 |
mapred.reduce.copy.backoff | int | 300 | 在声明任务失败之前,reducer获取一个map输出所花的最大事件,以秒为单位。
如果任务失败,reducer可以再此时间内尝试重传 |
io.sort.factor | int | 10 | 排序文件时,一次最多合并的流的数量。该属性也在map端使用。 |
mapred.job.shuffle.input.buffer.percent | float | 0.70 | 在shuffle的复制阶段(copy),分配给map输出的缓冲区占reduce堆空间的百分比。 |
mapred.job.shuffle.merge.percent | float | 0.66 | map输出缓冲区(由mapred.job.shuffle.input.buffer.percent定义)的阈值使用比例,用于启动合并输出和磁盘溢出写的过程。 |
mapred.inmem.merge.threshold | int | 1000 | 启动合并输出和磁盘溢出写过程的map输出的阈值数。0或者更小的数意味着没有阈值限制,溢出写行为由mapred.job.shuffle.merge.percent单独控制 |
mapred.job.reduce.input.buffer.percent | float | 0 | 在reduce过程中,在内存中保存map输出的空间占整个堆空间的比例。
reduce阶段开始时,内存中的map输出大小不能大于该值。默认情况下,在reduce任务开始之前,所有map输出都合并到磁盘上,以便为reducer提供尽可能多的内存。如果reducer需要的内存较少,可以增加该值,来最小化访问磁盘的次数,提高计算效率。 |
mapred.reduce.max.attempts | int | 4 | reduce任务失败后,重新尝试执行次数。默认值为4,如果任务reduce任务失败次数大于4,整个计算任务都会失败。 |
mapred.max.reduce.failures.percent | 不触发作业失败的情况下,允许reduce任务失败的最大百分比 | ||
mapred.reduce.tasks.speculative.execution | boolean | true | 是否启动reduce任务的推测执行 |
Hadoop整体调优
属性名称 | 类型 | 默认值 | 说明 |
mapred.child.java.opts | map或reduce任务的JVM内存大小。若设置太小,则会报错“Java heap space” | ||
mapred.job.reuse.jvm.num.tasks | int | 1 | 在一个tasktrakcer上,对于给定作业的每个JVM上可以运行的任务最大数。-1表示无限制,即同一个JVM可以被该作业的所有任务使用。共享JVM的好处在于:作业各个任务之间的状态共享,通过在静态字段中存储相关数据,任务可以较快速访问共享数据。 |
时间: 2024-11-10 00:39:57