当群集中正在运行作业时,如果突然 NameNode 失败,那么作业的状态(失败或被杀)是什么?
如果失败意味着,谁正在更新工作状态?
这如何在内部发挥作用?
答案 0 :(得分:2)
备用Namenode将成为具有故障转移过程的活动Namenode。看看How does Hadoop Namenode failover process works?
YARN 架构围绕Job History
展开。乔布斯将继续对namenode失败产生任何影响。如果上述三个过程中的任何一个失败,将根据相应的过程恢复完成作业恢复。
资源管理器恢复:
启用ResourceManger重新启动后,正在升级的RM(当前待机)处于活动状态会加载RM内部状态,并根据RM重启功能尽可能地继续运行上一个活动停止的位置。为先前提交给RM的每个托管应用程序生成一个新的尝试。
应用程序主恢复:
对于在YARN(又名MR2)上运行的MapReduce,MR ApplicationMaster扮演每个作业的跟踪角色。 MRAM故障恢复由属性mapreduce.am.max-attempts控制。可以根据作业设置此属性。如果它的值大于1,那么当ApplicationMaster死亡时,新的应用程序将进行新的应用程序尝试,直到最大尝试次数。启动新的应用程序尝试时,将中止并重新运行正在运行的任务,但不会重新运行已完成的任务。
节点管理器恢复:
在恢复期间,NM从状态存储加载应用程序的状态。每个应用程序的状态指示应用程序是否已完成。请注意,对于已完成的应用程序,将不再启动容器,但它可能仍在进行日志聚合。在恢复每个应用程序时,将创建一个新的Application对象,并触发初始化事件以重新初始化NM中的应用程序的簿记。
在所有这些阶段中,{{1}}起着关键作用。成功完成Map&将从作业历史记录服务器恢复减少任务状态。此状态有助于停止重新启动成功完成的Map / Reduce任务。
答案 1 :(得分:0)
由于我没有测试过,我不完全确定以下内容。但启动VM并为自己测试它并不会有什么坏处。
namenode不处理作业的状态,这就是Yarn正在做的事情。 如果namenode不是HA而且它死了,你将失去与HDFS的连接(甚至可能丢失数据)。纱线会默认尝试重新接触hdfs几次,最终超时,失败作业。