目录
一、资源相关参数
以下参数是在⽤户⾃⼰的mr应⽤程序中配置在mapred-site.xml就可以⽣效
1. mapreduce.map.memory.mb:
⼀个
Map Task
可使⽤的资源上限(单位
:MB
), 默认为1024
。如果
Map Task
实际使⽤的资源量超过该值,则会被强制杀死。
2. mapreduce.reduce.memory.mb:
⼀个
Reduce Task
可使⽤的资源上限(单位:MB
),默认为
1024
。如果
Reduce Task
实际使⽤的资源量超过该值,则会被强制杀死。
3. mapreduce.map.cpu.vcores:
每个
Map task
可使⽤的最多
cpu core
数⽬
,默认值: 1
4. mapreduce.reduce.cpu.vcores:
每个
Reduce task
可使⽤的最多
cpu core数⽬
,
默认值
: 1
5. mapreduce.map.java.opts: Map Task
的
JVM
参数,你可以在此配置默认的java heap size等参数
.
⽐如:
-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc” (
@taskid@
会被 Hadoop框架⾃动换为相应的
taskid
)
,
默认值: ""
6. mapreduce.reduce.java.opts: Reduce Task
的
JVM
参数
,
可以在此配置默认的java heap size
等参数
.
⽐如:
“-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc”, 默认值
: “”
下⾯的配置,应该在yarn启动之前就配置在服务器的yarn-site.xml配置⽂件中才能⽣效
7. yarn.scheduler.minimum-allocation-mb 1024 给应⽤程序container分配的最⼩内存
8. yarn.scheduler.maximum-allocation-mb 8192 给应⽤程序container分配的最⼤内存
9. yarn.scheduler.minimum-allocation-vcores 1
10. yarn.scheduler.maximum-allocation-vcores 32
11. yarn.nodemanager.resource.memory-mb 8192 每台NodeManager
最⼤可⽤内存
12. yarn.nodemanager.resource.cpu-vcores 8 每台NodeManager
最 ⼤可⽤cpu
核数
shuffle性能优化的关键参数,应在yarn启动之前就配置好
13. mapreduce.task.io.sort.mb 100 //shuffle的环形缓冲区⼤⼩,默认100m
14. mapreduce.map.sort.spill.percent 0.8 //环形缓冲区溢出的阈值,默认80%
二、容错相关参数
1. mapreduce.map.maxattempts:
每个
Map Task
最⼤重试次数,⼀旦重试参数超过该值,则认为Map Task
运⾏失败,默认值:
4
。
2. mapreduce.reduce.maxattempts:
每个
Reduce Task
最⼤重试次数,⼀旦重试参数超过该值,则认为Map Task
运⾏失败,默认值:
4
。
3. mapreduce.map.failures.maxpercent:
当失败的
Map Task
失败⽐例超过该值时,整个作业则失败,默认值为0.
如果你的应⽤程序允许丢弃部分输⼊数据,则该该值设为⼀个⼤于
0
的值,⽐如 5,表示如果有低于
5%
的
Map Task失败(如果⼀个
MapTask
重试次数超过
mapreduce.map.maxattempts
,则认为这个Map Task
失败,其对应的输⼊数据将不会产⽣任何结果),整个作业仍认为成功。
4. mapreduce.reduce.failures.maxpercent:
当失败的
Reduce Task
失败⽐例超过该值时,整个作业则失败,默认值为0.
5. mapreduce.task.timeout: Task
超时时间,经常需要设置的⼀个参数,该参数表达的意思为:如果⼀个task在⼀定时间内没有任何进⼊,即不会读取新的数据,也没有输出数据,则认为该task
处于block状态,可能是卡住
了,也许永远会卡主,为了防⽌因为⽤户程序永远
block
住不退出,则强制设置了⼀个
该超时时间(单位毫秒),默
认是
300000
。如果你的程序对每条输⼊数据的处理时间过⻓(⽐如会访问数据库,通过⽹络拉取数据等),建议将该 参数调⼤,该参数过⼩常出现的错误提示
是
“AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 sec sContainer killed by the ApplicationMaster.”。
三、本地运⾏MapReduce作业
设置以下⼏个参数
:
MapReduce.framework.name=local
fs.defaultFS=local(file:///)
四、效率和稳定性相关参数
1) MapReduce.map.speculative:
是否为
Map Task
打开推测执⾏机制,默认为 false
2) MapReduce.reduce.speculative:
是否为
Reduce Task
打开推测执⾏机制,默认为false
3) MapReduce.job.user.classpath.first & MapReduce.task.classpath.user.precedence:当同⼀个
class
同时出现在⽤户 jar包和
hadoop jar
中时,优先使⽤哪个
jar
包中的
class
,默认为
false
,表示优先使⽤hadoop jar
中的
class
4) MapReduce.input.fileinputformat.split.minsize: FileInputFormat 做切⽚时的最⼩切⽚⼤⼩
5) MapReduce.input.fileinputformat.split.maxsize:
FileInputFormat做切⽚时的最⼤切⽚⼤⼩(
切⽚的默认⼤⼩就等于
blocksize
,即 134217728)