Hadoop官方文档学习之 HDFS高可用性QJM与NFS模式

背景

在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集都有一个NameNode,如果该机器或进程不可用,整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动为止。

HDFS高可用性功能通过提供在具有热备份的主动/被动配置中在同一集群中运行两个冗余NameNode的选项来解决上述问题。这允许在计算机崩溃的情况下快速故障转移到新的NameNode,或者为计划维护目的而进行管理员启动的正常故障转移。

体系结构

Quorum Journal Manager模式

在典型的HA集群中,两台独立的机器被配置为NameNode。在任何时候,只有一个NameNodes处于Active状态,另一个处于Standby状态。活动NameNode负责群集中的所有客户端操作,而Standby仅充当从属服务器,并保持足够的状态以在必要时提供快速故障转移。

为了让备用节点保持其与活跃节点的状态同步,两个节点都与一组称为“日志节点”(Journal Node)的独立守护进程进行通信。当活动节点执行任何名称空间修改时,它会将修改记录持久记录到大多数这些JN中。备用节点能够读取来自JN的编辑,并不断监视它们以更改编辑日志。当待机节点看到编辑时,它将它们应用到它自己的名称空间。如果发生故障转移,备用服务器将确保在将自己提升为活动状态之前,已经从JounalNodes中读取所有编辑。这确保了在故障转移发生之前命名空间状态已完全同步。

为了提供快速故障切换,备用节点还需要有关于集群中块的位置的最新信息。为了实现这一点,DataNode配置了两个NameNode的位置,并将块位置信息和心跳发送到两者。

HA群集的正确操作对于一次只有一个NameNode处于活动状态至关重要。否则,命名空间状态将很快在两者之间发生分歧,从而可能导致数据丢失或其他不正确的结果。为了确保这个属性并防止所谓的“裂脑场景”,JournalNodes一次只允许一个NameNode成为活跃节点。在故障转移期间,要成为活动状态的NameNode将简单地接管写入JournalNodes的角色,这将有效地防止其他NameNode继续处于活动状态,从而允许新的活动安全地进行故障转移。

NFS for the shared storage 共享编辑日志模式

为了使备用节点保持其与活动节点的状态同步,当前的实现要求两个节点都可以访问共享存储设备上的目录(例如,从NAS上挂载NFS)。未来版本中可能会放宽此限制。

硬件资源

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

NameNode计算机 - 运行Active和Standby NameNode的计算机应该具有彼此相同的硬件,以及与非HA集群中使用的硬件相同的硬件。

Quorum Journal Manager模式

JournalNode机器 - 运行JournalNodes的机器。JournalNode守护进程相对轻量级,因此这些守护进程可以合理地与具有其他Hadoop守护进程的计算机并置,例如NameNodes,JobTracker或YARN ResourceManager。注意:必须至少有3个JournalNode守护进程,因为必须将编辑日志修改写入大多数JN。这将允许系统容忍单台机器的故障。您也可以运行3个以上的JournalNodes,但为了实际增加系统可以容忍的故障次数,您应该运行奇数个JN(即3,5,7等)。请注意,在运行N个JournalNodes时,系统最多可以承受 (N-1)/ 2 次故障并继续正常运行。

NFS for the shared storage 共享编辑日志模式

共享存储 - 您需要有一个共享目录,这两个NameNode计算机都可以具有读/写访问权限。通常这是一个支持NFS的远程文件管理器,并安装在每个NameNode机器上。目前只支持一个共享编辑目录。因此,系统的可用性受限于此共享编辑目录的可用性,因此为了移除所有单点故障,需要为共享编辑目录提供冗余。具体来说,存储的多个网络路径以及存储本身的冗余(磁盘,网络和电源)。有鉴于此,建议共享存储服务器成为高质量的专用NAS设备,而不是简单的Linux服务器。

请注意,在HA群集中,备用NameNode还执行名称空间状态的检查点,因此不需要在HA群集中运行Secondary NameNode,CheckpointNode或BackupNode。事实上,这样做会是一个错误。这还允许正在重新配置未启用HA的HDFS群集启用HA的硬件重新使用之前专用于Secondary NameNode的硬件。

部署

关于QJM的高可用HDFS部署细节,参见我的另一篇文章 HDFS高可用性 手动故障转移和自动故障转移配置教程

参考:
[1] HDFS High Availability Using the Quorum Journal Manager
http://hadoop.apache.org/docs/r2.7.5/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

[2] High Availability With NFS
http://hadoop.apache.org/docs/r2.7.5/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html

你可能感兴趣的:(【大数据】➣,Hadoop,Hadoop官方文档学习专栏)