JournalNode 和 Secondary NameNode

在Hadoop HA集群中,JournalNode确保Active和Standby NameNode的状态同步,通过记录命名空间修改并供Standby节点读取。Secondary NameNode在HA集群中不再使用,其功能由JournalNode替代,保证只有一个NameNode处于Active状态以避免数据丢失。至少需要3个JournalNode以容忍单机故障。
摘要由CSDN通过智能技术生成

在一个典型的HA集群中,两个或更多的独立机器被配置为NameNodes。在任何时间点上,正好有一个NameNode处于活动状态,其他的NameNode处于待机状态。Active NameNode 负责集群中的所有客户机操作,而Standbys 只是作为worker,保持足够的状态,以便在必要时提供快速故障切换。

为了让Standby 节点与Active节点保持状态同步,这两个节点都会与一组独立的守护进程进行通信,这些守护进程被称为 "JournalNodes"(JNs)。当Active节点执行任何命名空间修改时,它就会持久地将修改的记录记录记录到这些JNs中的大部分。Standby节点能够读取这些JNs中的编辑,并时刻关注这些JNs对编辑日志的修改。当Standby节点看到这些编辑后,它会将其应用到自己的命名空间中。在发生故障切换时,Standby节点将确保它已经读取了来自JournalNodes的所有编辑,然后再将自己提升到Active状态。这样可以确保在故障切换发生之前,命名空间状态完全同步。

为了提供快速故障切换,还需要Standby节点掌握集群中块位置的最新信息。为了实现这一点,DataNode配置了所有NameNode的位置,并向所有的NameNode发送块位置信息和心跳信息。

 

对于HA集群的正确运行来说,一次只能有一个NameNode处于Active状态是至关重要的。否则,命名空间的状态会很快在这两个节点之间发生分歧,有可能造成数据丢失或其他不正确的结果。为了保证这个属性,并防止所谓的 "分裂脑的情况",JournalNode将永远只允许一个NameNode作为一个写入器。在故障切换期间,将成为活动状态的NameNode将简单地接管向JournalNode写入的角色,这将有效地阻止另一个NameNode继续处于活动状态,允许新的Active安全地进行故障切换。

 

为了部署HA集群,您应该准备以下内容:

  • NameNode machines: 运行 Active 和 Standby NameNode 的机器应该具有同等的硬件,并与非 HA 集群中使用的硬件相当。
  • JournalNode machines:JournalNode的机器上运行JournalNode守护进程。JournalNode 守护进程相对较轻,因此这些守护进程可以合理地与其他 Hadoop 守护进程(例如 NameNodes、JobTracker 或 YARN ResourceManager)搭配在一起运行的机器上。注意:必须至少有3个JournalNode守护进程,因为编辑日志修改必须写到大部分的JN。这将使系统能够容忍单机故障。你也可以运行3个以上的JournalNode,但为了实际增加系统可以容忍的故障数量,你应该运行奇数的JN,(即3、5、7等)。注意,当运行N个JournalNodes时,系统最多可以容忍(N - 1)/2的故障,并继续正常运行。

请注意,在HA集群中,备用NameNode也会执行命名空间状态的检查点,因此在HA集群中没有必要运行SecondaryNameNode、CheckpointNode或BackupNode。事实上,这样做是会出错的。这也允许正在重新配置一个非 HA 启用的 HDFS 集群的人重新配置为 HA 启用的 HDFS 集群,以重新使用之前专门用于 Secondary NameNode 的硬件。(非HA SecondaryNameNode)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值