我正在阅读“ Hadoop:权威指南”。这就是作者在Hadoop 2.x之前解释容错的方式
没有名称节点,则无法使用文件系统。其实如果机器在运行 namenode被删除,文件系统上的所有文件将丢失,因为 将无法知道如何从模块上的块中重建文件 数据节点。因此,重要的是使namenode能够抵抗故障, Hadoop为此提供了两种机制。 第一种方法是备份组成文件系统持久状态的文件 元数据。可以配置Hadoop,以便namenode将其持久状态写入 多个文件系统。这些写入是同步的和原子的。常规配置 选择是写入本地磁盘还是远程NFS挂载。 也可以运行辅助名称节点,尽管其名称不能用作 一个名称节点。它的主要作用是定期将名称空间图像与编辑合并 日志以防止编辑日志变得太大。次要名称节点通常 在单独的物理计算机上运行,因为它需要大量的CPU和大量的资源 内存作为执行合并的名称节点。它保留了合并名称的副本- 空间图像,可以在namenode发生故障的情况下使用。但是,状态 次要名称节点的时间落后于次要名称节点的时间,因此如果完全失败 首先,数据丢失几乎可以肯定。在这种情况下,通常的做法是复制 NFS上辅助节点上的namenode的元数据文件,并作为新节点运行 初级
我的理解是NFS始终与主namenode同步。我的问题是,在辅助名称节点更新了主要名称节点的元数据之后,存储在NFS中的元数据如何与主要名称节点同步?如果主服务器在同步NFS之前完全失败怎么办?
答案 0 :(得分:1)
该文档并没有说“主要”或“辅助NameNode”必须与NFS同步,而是说,如果您已经配置了Namenode到NFS的备份(我相信您必须做些自己的事,因为它说的是(“配置选择”),则可以将它们还原到新服务器,并将其指定为新的Namenode。注意“尽管其名称(辅助名称节点)不充当名称节点” ,并且“辅助名称节点的状态滞后于主要节点的状态”,所以它永远不会获得不具有该名称的数据。如果已经到达主数据库,它将检查点已经存在的数据库。
引用的那部分暗示着having a Standby Namenode,其目的与辅助目的不同,备用对象应该保持同步
从该链接引用,
请注意,在HA群集中,备用NameNode也执行名称空间状态的检查点,因此不必在HA群集中运行辅助NameNode,CheckpointNode或BackupNode。实际上,这样做将是一个错误