大数据开发要学会看yarn日志:Task容错机制,任务推测执行,计数器_yarn job 日志 task 日志(1)

mapred.reduce.max.attempts —废弃参数
mapreduce.reduce.maxattempts—推荐新参数


#### **1.3.1任务任务实例出现failed/killed的场景**


1.任务实例attempt长时间没有向MRAPPMaster报告,后者一直没收到其进度的更新,一般attempt实例与APPMaster3s通信一次,前者像后者报告任务进度和状态;超出阈值,任务变会被认为僵死“”被标记失败failed,然后MRAPPMaster会将其JVM杀死,释放资源。然后重新尝试在其他节点启动一个新的任务实例。



mapreduce.task.timeout=600000 ms,10分钟
The number of milliseconds before a task will be terminated if it neither reads an input, writes an output, nor updates its status string. A value of 0 disables the timeout.


2.任务attempt失败fialed的其他原因比较多,比如代码有问题,outofmemory,GC.


3.**一个任务实例attempt被killed一般就两种情况**,**一是客户端主动请求杀死任务,二是框架主动杀死任务**。对于后者,一般是由于作业被杀死或者该任务的备任任务(推测执行)已经执行完成,这个任务不需要继续执行了,所以被Killed。比如nodemanager节点故障,比如停止等,这时候上面的所有任务实例都会被标记为killed。其他再比如任务执行超出某些阈值范围,比如动态分区超过最大文件数,所有任务都会被杀死killed.


![](https://img-blog.csdnimg.cn/20210607171823858.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2NDQyNTUz,size_16,color_FFFFFF,t_70)


**如下任务被杀死就是因为MRAPPMaster主动要求杀死的备份任务**


![](https://img-blog.csdnimg.cn/20210607171858155.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2NDQyNTUz,size_16,color_FFFFFF,t_70)


## 2.任务的推测执行


     实际开发中查看yarn日志可能会遇到,为啥显示有257reduce没跑完,下面attempt里却有261redcues 处于running状态呢?


![](https://img-blog.csdnimg.cn/20210607174527314.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2NDQyNTUz,size_16,color_FFFFFF,t_70)


**MRappMaster当监控到一个任务实例的运行速度慢于其他任务实例时,会为该任务启动一个备份任务,让这个两个任务同时处理一份数据,如map/reduce。谁先处理完,成功提交给MRappMaster就采用谁的,另一个则会被killed,这种方式可以有效防止那些长尾任务拖后腿。是为任务推测speculative execution。**


**任务推测执行的好处就是空间换时间,防止长尾拖后腿的,比如某个实例所在的机器不行跑的贼慢,重启一个很快执行完了。任务推测的坏处就是两个重复任务,浪费资源,降低集群的效率,尤其redcue任务的推测执行,拉群map数据加大网络io,而且推测任务可能会相互竞争。**


**默认集群开启推测执行,可以基于集群计算框架,也可以基于任务类型单独开启,map任务建议开启,reduce可以结合实际谨慎开启。**



mapreduce.map.speculative=true
—默认,开启map推测执行
mapreduce.reduce.speculative=true
—默认,开启reduce推测执行,都可单独开。
mapreduce.job.speculative.speculative-cap-running-tasks=0.1
–在任何时刻可以被推测执行的任务数百分比

–其他还有很多关于推测执行的参数,可以参考官网


## 3.任务进度与计数器


经常参看某个整个任务进度或者task进度,你知道这个进度是怎么计算出来的?


![](https://img-blog.csdnimg.cn/20210607182027890.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2NDQyNTUz,size_16,color_FFFFFF,t_70)


**map/reduce任务task运行时,会和MRAPPMaster进行通信,间隔3s,通过UMbilical接口汇报自己的 任务进度以及任务状态,最终汇总展示如上图所示。**


**map任务比较简单,任务进度就是对切片输入的数据总量已处理的占比。比如处理完了85%的数据了那么进度就是85%,主要通过计数器统计。**


**reduce任务根据redue阶段的完成统计的,三个过程依次是;拉取复制map数据1/3,合并排序1/3,reduce函数聚合处理1/3;比如某个reduce处理了map输出的数据一半,则该reduce的进度是1/3+1/3+1/3\*1/2。**


**如下反应了一个reuce的三个阶段**


![](https://img-blog.csdnimg.cn/2021060718403196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2NDQyNTUz,size_16,color_FFFFFF,t_70)



![img](https://img-blog.csdnimg.cn/img_convert/394cdcef6a495382915111d14134d054.png)
![img](https://img-blog.csdnimg.cn/img_convert/2ec3735d6c039987d11b9f78c6cab797.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值