设为首页 收藏本站
查看: 982|回复: 0

[经验分享] 【Hadoop七】基于Yarn的Hadoop Map Reduce容错

[复制链接]
发表于 2016-12-8 07:23:07 | 显示全部楼层 |阅读模式
  运行于Yarn的Map Reduce作业,可能发生失败的点包括

  • Task Failure
  • Application Master Failure
  • Node Manager Failure
  • Resource Manager Failure
1. Task Failure
  任务执行过程中产生的异常和JVM的意外终止会汇报给Application Master。僵死的任务也会被Application Master监测到,这是通过Task和Application Master之间的心跳实现的,对于Applciation Master来说,任务意外终止和任务僵死(长时间不给Application Master发送心跳包,这个心跳时间超时时间可以通过mapreduce.task.timeout进行设置)是一样的。
  Hadoop MapReduce如何判定一个任务失败,任务失败是否使得整个作业失败

  • 任务有重试机制,如果重试四次任务仍然失败则认为任务彻底失败,不再进行尝试运行。Mapper任务的重试次数以及Reducer任务的重试次数可以分别通过mapreduce.map.maxattempts和mapreduce.reduce.maxattempts进行设置
  •   作业失败是根据失败的Mapper Task占Mapper Task的总数百分比和失败的Reducer Task的占Reducer任务总数的百分比进行判定的,这个百分数可以分别通过mapreduce.map.failures.maxpercent以及mapreduce.reduce.failures.maxpercent进行设置
2. Application Master Failure
  同任务失败后进行重试一样,Application Master失败也会进行重试,默认情况下,Application Master失败一次,Yarn就认为Application Master失败了,即默认情况下是没有重试机制的。 重试的次数可以通过yarn.resourcemanager.am.max-retries进行次数设置。
  作业运行过程中,Application Master会定时的向Resource Manager发送心跳包,如果在给定的时间内Resource Manager没有收到来自Application Master心跳包,那么Resource Manager进行失败检测然后重新启动一个新的Container,然后在这个Container中启动新的Application Master进程。对于新创建的Application Master,它能够检测到之前失败的Application Master已经运行完成的任务,因此,新的Application Master无需重头开始已经执行过的任务。
  客户端从Application Master获取任务执行的状态信息,如果Application Master挂了然后新的Application Master启动后,客户端需要知道新的Application Master地址。在Application Master初始化作业时,客户端会向Resource Manager发送请求询问Application Master的地址,然后缓存在客户端本地。如果客户端长时间得不到Application Master的应答,那么客户端会重新向Resource Manager发送请求询问新的Application Master的地址
3. Node Manager failure
  如果Node Manager挂了,那么Node Manager停止向Resource Manager发送心跳包,此时,ResourceManager会将它从可用节点中移除。默认情况下,Resource Manager等待10分钟以确定node manager已经挂了。这个时间间隔可以通过yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms进行设置, 默认600000
  Node Manager挂了,那么运行于其上的Task和Application Master都会失败,Application Master和Task的恢复机制前面已有描述。
  如果Node Manager本身没有挂,但是运行于这个节点的任务数失败率非常高,那么Application Master将把这个Node Manager加入到黑名单中。(是Application Master将Node Manager加入到了黑名单中)
4. Resource Manager failure
  Resource Manager挂了,那么Yarn的各个组件,包括正在执行的作业、任务都会受到影响。Resource Manager的作用如此重要,因此Hadoop提供了检查点不定时的将它的状态持久化到存储系统,以便在它失败后,能够从失败的状态中恢复过来。
  Resource Manager挂了之后,系统管理员重新启动一个新的Resource Manager,然后从上个失败的Resource Manager保存的检查点进行状态恢复。保存的状态信息包括包括集群的Node Managers以及正在运行的作业,Task和Application Master不在要恢复的状态中,因为Application Master是由Node Manager管理,Task是由Application Master管理。
  用于记录Resource Manager状态信息的存储介质是由yarn.resourcemanager.store.class设置的,这个属性接受一个类,默认是org.apache.hadoop.yarn.server.resourcemanager.recovery.MemStore,即Resource Manager默认将状态信息记录到内存中,这很不合理,如果Resource Manager挂了,内存数据也挤有可能挂了,将状态信息记录到内存中,不知道是怎么考虑的!Resource Manager也可以将状态信息记录到Zookeeper中

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311088-1-1.html 上篇帖子: 有hadoop_zookeeper的pom.xml 下篇帖子: hadoop和hive的实践应用(一)——hadoop分布式平台搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表