MapReduce运行机制(二) 失败

本文详细阐述了MapReduce任务在不同阶段可能遇到的失败情况,包括任务、Application Master、Node Manager和ResourceManager的失败处理。任务失败时,会进行重调度,但超过一定次数不再尝试。Application Master失败时,YARN会启动新的实例恢复任务状态。Node Manager失败可能导致任务中间输出丢失,需要重新执行。ResourceManager故障则需要实现HA以保证作业恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务/application master/NM/RM

任务运行失败

1) 任务代码异常

        > JVM在退出前向application master发送错误报告,报告被记录用户日志

        > application master将任务标记为failed,释放容器和资源

        > 如果是Streaming任务,如果Streaming进程以非零代码退出,则标记为失败

            strram.non.zero.exit.is.failure

2) 任务JVM突然退出

        > JVM软件缺陷,NM注意到JVM退出,通知application master将任务标记为失败

3) 任务挂起

        > application master长时间未接收到进度更新,将任务标记为失败,JVM进程也将会自动杀死

          >> 默认超时时间是10min,mapreduce.task.timeout,毫秒单位,如果设置为0,则永远不会被标记为失败,挂起的任务占用资源不释放,降低集群效率,要避免

4) 任务失败处理

        > 重新调度任务执行,避免在失败节点尝试重新调度,默认任务失败超过4次,不再重试

           mapreduce.map.maxattempts

        > 如果希望少数几个任务不影响整体作业的执行,设置任务失败的最大百分比

           mapreduce.map.failures.maxpercent/mapreduce.reduce.failures.maxpercent

        > 终止或取消任务尝试,因为是推测副本或所处NM失败,导致运行的任务被标记killed,被中止的尝试不计入maxattempts

           Web UI或者mapred job命令


application master运行失败

1) MapReduce任务时application master做多尝试次数:mapreduce.am.max-attempts属性默认为2

2) YARN上的application master最大尝试次数: yarn.resourcemanager.am.max-attempts属性默认为2,如果要增加MR程序的尝试次数,先增加YARN上的次数

3) 恢复过程:

       > YARN: application master向RM发送周期心跳,失败时,RM检测到失败并通知NM管理一个新的容器开始一个新的application master

        > MR: 使用作业历史恢复失败的应用程序任务状态,不需要重新运行

        > 恢复功能 yarn.app.mapreduce.am.job.reduce.enable

4) 作业初始化时,客户端向RM询问application master的地址并在客户端缓存地址,不需要每次都重载RM,如果application master运行失败,则必须向RM请求新的地址。


NM运行失败

1) NM崩溃或因运行十分缓慢而失败,会停止向RM发送心跳

2) RM长时间未收到NM的心跳,则从自己的NM池中移除,调度新的容器

    yarn.resourcemanager.nm.liveness-monitor.expiry-internal-ms 默认10min

3) 作业尚未完成时,需要重新运行已完成的map任务,因为任务的中间输出保留在失败NM上,无法被reduce访问

4) NM上运行失败次数过高,可以拉黑NM。application master管理黑名单

    mapreduce.job.maxtaskfailures.per.tracker 默认3次


RM运行失败

1) 需要实现RM HA,实现热备

2) 所有运行中的应用程序的信息存储在一个高可用的状态存储区(Zookeeper/HDFS备份)

3) 恢复

        > 启动备用RM,从状态存储区读取应用程序信息

        > 未集群所有应用程序重启application master,不被计入yarn.resourcemanager.am.max-attempts

           因为应用程序不是程序代码问题,是系统强行终止

4) 切换由failover controller故障转移控制器,Zookeeper的leader选举机制确保只有一个RM,故障转移控制器默认是嵌入在RM中的,自动工作。

5) 客户端和NM向两个RM都轮询,直到发现主RM,故障时,直到备用RM转移为主RM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值