MapReduce 调优

1. 相关的资源参数

mapreduce.map.memory.mb: 一个maptask可以使用的资源上限,默认是1G,如果超过设置的值,会被强制杀死
mapreduce.reduce.memory.mb:一个 Reduce Task 可使用的资源上限默认是1G,如果超过设置的值,会被强制杀死
mapreduce.map.cpu.vcores:每个maptask最多的CPU core 默认是1个
mapreduce.reduce.cpu.vcores:每个reducetask最多的CPU core 默认是1个


以下参数应该在 yarn 启动之前就配置在服务器的配置文件中才能生效

yarn.scheduler.minimum-allocation-mb=1024:给应用程序 container 分配的最小内存
yarn.scheduler.maximum-allocation-mb=8192:给应用程序 container 分配的最大内存
yarn.scheduler.minimum-allocation-vcores=1:给应用程序 container 分配的最小CPU个数
yarn.scheduler.maximum-allocation-vcores=32:给应用程序 container 分配的最大CPU个数
yarn.nodemanager.resource.memory-mb=8192 :nodemanager启动任务的
mapreduce.task.io.sort.mb=100 :shuffle阶段环形缓冲区的大小
mapreduce.map.sort.spill.percent=0.8:shuffle阶段环形缓冲区的阈值

2. 相关的容错参数

mapreduce.map.maxattempts=4:每个 Map Task 最大重试次数,一旦重试参数超过该值,则认为 Map Task 运行失败
mapreduce.reduce.maxattempts=4: 每个 Reduce Task 最大重试次数,一旦重试参数超过该值,则认为 Map Task 运行失败
mapreduce.map.failures.maxpercent=0: 当失败的 Map Task 失败比例超过该值为,整个作业则失败,失败的maptask比例不能比这个值大
mapreduce.reduce.failures.maxpercent=0:当失败的 Reduce Task 失败比例超过该值为,整个作业则失败
mapreduce.task.timeout:如果一个 task 在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该 task 处于 block 状态,可能是卡住了,也许永远会卡主,为了防止因为用户程序永远block 住不退出,则强制设置了一个该超时时间(单位毫秒),默认是 300000。

3. 本地运行 mapreduce 作业

mapreduce.framework.name=local
mapreduce.jobtracker.address=local

4. 效率和稳定性相关参数

mapreduce.map.speculative:是否为 Map Task 打开推测执行机制,默认为 false
mapreduce.reduce.speculative:是否为 Reduce Task 打开推测执行机制,默认为 false
mapreduce.input.fileinputformat.split.minsize: FileInputFormat 做切片时的最小切片大小
mapreduce.input.fileinputformat.split.maxsize:FileInputFormat 做切片时的最大切片大小(切片的默认大小就等于 blocksize,即 134217728)

注意:所有的参数调试都跟根据自己的实际的业务逻辑进行调试调试的!!!!!

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/194114.html

(0)
上一篇 2021年11月15日
下一篇 2021年11月15日

相关推荐

发表回复

登录后才能评论