概述
前言
现实中,用户代码错误、进程崩溃、机器故障等等都可能导致MapReduce程序失败,但是Hadoop最主要的好处之一就是它能处理此类故障并完成作业。
失败
-
经典MapReduce中的失败
-
YARN中的失败
YARN中的失败
主要考虑三种实体的失败:任务、application master、节点资源管理器和资源管理器
(1)任务失败
-
任务运行失败类似于经典MapReduce中的运行任务失败。JVM的运行时异常和突然退出被反馈给application master,该任务尝试被标记为失败。
-
类似的通过在umbilical channel上的ping缺失(即超时,由mapreduce.task.time设置超时时间),application master会注意到挂起的任务,任务尝试也会被标记为失败
-
确定任务失败的配置属性和经典MapReduce中的一样:4次尝试后任务将标记为失败,可通过参数设置Map:mapreduce.reduce.maxattempts和Reduce:mapreduce.reduce.maxattempts。如果一个作业中超过mapreduce.map.failures.maxpercent的map或超过mapreduce.reduce.failure.maxpercent的reduce任务运行失败,整个作业将会失败
(2)application master运行失败
-
YARN中的应用程序在运行失败的时候有几次尝试机会
-
就像MapReduce任务在遇到硬件故障或网络故障时要进行几次尝试一样,可通过参数yarn。resourcemanager.am.max-retries属性设置,默认应用程序失败一次就会被标记为失败。
-
application master会向资源管理器发送周期性的心跳,当application master出现故障时,资源管理器将检测到该故障并在一个新的容器(由节点管理器管理)中开始一个新的master实例。MapReduce application master可以恢复故障应用程序所运行任务的状态,使其不必重新运行,默认没有开启,但可以通过参数yarn.app.mapreduce.am.job.recovery.enable=true属性设置
-
客户端向application master轮训进度报告,如果它的application master运行失败,客户端就需要重新定位新的实例。在作业初始化期间,客户端向资源管理器询问并缓存application master的地址,使其每次需要向application master查询时不必重载资源管理器。但如果application master运行失败,客户端就会在发出状态更新请求时超时,这是客户端就会想资源管理器请求新的application master的地址
(3)节点管理器运行失败
-
节点管理器失败就会停止向资源管理器发送心跳信息并被移出可用的节点资源管理器池。默认时间是10分钟,可通过参数yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms属性设置。
-
节点管理器失败则上面运行的所有任务或application master都将会按照之前描述的机制进行恢复。
-
如果应用程序失败次数过高,那么该节点管理器可能会被拉黑。由application master管理黑名单。对于MapReduce来说,如果一个节点资源管理器上有超过三个任务失败,application master就会尽量将任务调度到不同的节点上,可通过参数mapreduce.job.maxtaskfailures.per.tracker属性设置该阈值
(4)资源管理器失败
-
资源管理器失败时很严重的问题,没有资源管理器,作业和任务都将无法启动,在默认配置中,资源管理器是单点故障。为了获得高可用(HA),我们需要配置一对资源管理器,以便在主资源管理器失败后,备份资源管理器可以继续运行
-
将所有的application master的运行信息保存在一个高可用的状态存储中(Zookeeper或HDFS),这样备份资源管理器就可以快速的进行重构,状态信息只需要存储节点管理器和application master信息,因为备份资源管理器读取application master信息后就可以在集群中重启所有的application master,该行为不会被计入失败尝试。
最后
以上就是无聊帆布鞋为你收集整理的MapReduce的容错机制(二)的全部内容,希望文章能够帮你解决MapReduce的容错机制(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复