mapreduce参数优化

1 资源相关参数

以下调整参数都在mapred-site.xml这个配置文件当中有
以下参数是在用户自己的mr应用程序中配置就可以生效

(1) mapreduce.map.memory.mb: 一个Map Task可使用的资源上限(单位:MB),默认为1024。如果Map Task实际使用的资源量超过该值,则会被强制杀死。
(2) mapreduce.reduce.memory.mb: 一个Reduce Task可使用的资源上限(单位:MB),默认为1024。如果Reduce Task实际使用的资源量超过该值,则会被强制杀死。
(3) mapred.child.java.opts 配置每个map或者reduce使用的内存的大小,默认是200M
(4) mapreduce.map.cpu.vcores: 每个Map task可使用的最多cpu core数目, 默认值: 1
(5) mapreduce.reduce.cpu.vcores: 每个Reduce task可使用的最多cpu core数目, 默认值: 1

shuffle性能优化的关键参数,应在yarn启动之前就配置好
(6)mapreduce.task.io.sort.mb 100 //shuffle的环形缓冲区大小,默认100m
(7)mapreduce.map.sort.spill.percent 0.8 //环形缓冲区溢出的阈值,默认80%

应该在yarn启动之前就配置在服务器的配置文件中才能生效
以下配置都在yarn-site.xml配置文件当中配置

(8) yarn.scheduler.minimum-allocation-mb 1024 给应用程序container分配的最小内存
(9) yarn.scheduler.maximum-allocation-mb 8192 给应用程序container分配的最大内存
(10) yarn.scheduler.minimum-allocation-vcores 1 container最小的虚拟内核的个数
(11)yarn.scheduler.maximum-allocation-vcores 32 container最大的虚拟内核的个数
(12)yarn.nodemanager.resource.memory-mb 8192 每个nodemanager给多少内存

2 容错相关参数

(1) mapreduce.map.maxattempts:每个Map Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。
(2) mapreduce.reduce.maxattempts: 每个Reduce Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。
3) mapreduce.job.maxtaskfailures.per.tracker: 当失败的Map Task失败比例超过该值为,整个作业则失败,默认值为0. 如果你的应用程序允许丢弃部分输入数据,则该该值设为一个大于0的值,比如5,表示如果有低于5%的Map Task失败(如果一个Map Task重试次数超过mapreduce.map.maxattempts,则认为这个Map Task失败,其对应的输入数据将不会产生任何结果),整个作业仍认为成功。
(4) mapreduce.task.timeout: Task超时时间,默认值为600000毫秒,经常需要设置的一个参数,该参数表达的意思为:如果一个task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该task处于block状态,可能是卡住了,也许永远会卡主,为了防止因为用户程序永远block住不退出,则强制设置了一个该超时时间(单位毫秒)。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大,该参数过小常出现的错误提示是“AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster.”。

3 本地运行mapreduce 作业

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

4 效率和稳定性相关参数

(1) mapreduce.map.speculative: 是否为Map Task打开推测执行机制,默认为true,如果为true,如果Map执行时间比较长,那么集群就会推测这个Map已经卡住了,会重新启动同样的Map进行并行的执行,哪个先执行完了,就采取哪个的结果来作为最终结果,一般直接关闭推测执行
(2) mapreduce.reduce.speculative: 是否为Reduce Task打开推测执行机制,默认为true,如果reduce执行时间比较长,那么集群就会推测这个reduce已经卡住了,会重新启动同样的reduce进行并行的执行,哪个先执行完了,就采取哪个的结果来作为最终结果,一般直接关闭推测执行
(3) mapreduce.input.fileinputformat.split.minsize: FileInputFormat做切片时的最小切片大小,默认为0

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MapReduce是一个分布式计算框架,其性能取决于许多因素,例如硬件配置、数据分布、算法复杂度、网络带宽等等。以下是一些MapReduce优化参数的建议: 1. 调整mapreduce.map.memory.mbmapreduce.reduce.memory.mb参数,以确保任务有足够的内存。如果任务的内存不够,则可能会导致任务失败或运行缓慢。 2. 调整mapreduce.map.cpu.vcores和mapreduce.reduce.cpu.vcores参数,以确保任务有足够的CPU资源。如果任务的CPU资源不够,则可能会导致任务运行缓慢。 3. 调整mapreduce.task.io.sort.mb参数,以确保Map任务有足够的内存来进行排序操作。如果Map任务的内存不够,则可能会导致排序操作耗时较长。 4. 调整mapreduce.tasktracker.map.tasks.maximum和mapreduce.tasktracker.reduce.tasks.maximum参数,以确保任务能够充分利用集群资源。如果任务数量不够,则可能会导致集群资源浪费。 5. 调整mapreduce.job.reduce.slowstart.completedmaps参数,以确保Reduce任务在Map任务完成一定比例后开始执行。如果Reduce任务开始执行得太早,则可能会导致Reduce任务执行缓慢。 6. 调整mapreduce.map.speculative和mapreduce.reduce.speculative参数,以启用任务的备份执行。如果任务存在资源利用不充分的情况,则备份执行可以提高任务的执行效率。 7. 调整mapreduce.input.fileinputformat.split.minsize参数,以控制HDFS块的大小。如果块的大小过小,则可能会导致任务数量过多,从而影响任务的执行效率。 8. 调整mapreduce.jobtracker.handler.count和mapreduce.tasktracker.http.threads参数,以控制任务的处理效率。如果处理效率不够高,则可能会导致任务的执行速度缓慢。 这些参数只是MapReduce优化的一部分。要优化MapReduce性能,需要根据具体情况进行调整,并综合考虑各种因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值