当作业在集群中运行时,如果NameNode突然失败,那么作业的状态(失败或终止)是什么?
如果失败意味着谁在更新作业状态?
这在内部是如何运作的?
备用名称节点将成为具有故障转移过程的活动名称节点。看看Hadoop名称节点故障转移过程是如何工作的?
YARN体系结构围绕着Resource Manager, Node Manager and Applications Master
。作业将继续,不会因namenode故障而受到任何影响。如果上述三个进程中的任何一个失败,将根据各自的进程恢复情况进行作业恢复。
资源管理器恢复:
启用ResourceManger重新启动后,将被提升(当前备用)到活动状态的RM将加载RM内部状态,并根据RM重新启动功能,尽可能多地从上一个活动状态停止的位置继续运行。将为以前提交给RM的每个托管应用程序生成一个新的尝试。
应用程序主恢复:
对于在YARN(又名MR2)上运行的MapReduce,MR ApplicationMaster扮演着每个作业的作业跟踪器的角色。MRAM故障恢复由属性mapreduce.am.max-tempts控制。可以为每个作业设置此属性。如果它的值大于1,那么当ApplicationMaster死亡时,会为新的应用程序尝试旋转一个新的,最高可达最大尝试次数。当启动新的应用程序尝试时,运行中的任务将中止并重新运行,但已完成的任务不会重新运行。
节点管理器恢复:
在恢复过程中,NM从状态存储加载应用程序的状态。每个应用程序的状态指示应用程序是否已完成。请注意,对于已完成的应用程序,将不再启动容器,但它可能仍在进行日志聚合。随着每个应用程序的恢复,将创建一个新的应用程序对象,并触发初始化事件,以重新初始化NM中应用程序的记账。
在所有这些阶段中,Job History
起着至关重要的作用。已成功完成映射&减少任务状态将从作业历史服务器中恢复。此状态有助于停止重新启动已成功完成的Map/Reduce任务。
查看Resource Manager HA文章、Node Manager重启文章和YARN HA文章
我不完全确定以下内容,因为我还没有测试过。但启动一个虚拟机并自己测试它并没有坏处。
namenode不处理作业的状态,这就是Yarn正在做的。如果namenode不是HA并且它死了,那么您将失去与HDFS的连接(甚至可能会丢失数据)。默认情况下,yarn会尝试重新联系hdfs几次,最终超时并使作业失败。