美文网首页Big Data
HDFS高可用性之QJM & NFS

HDFS高可用性之QJM & NFS

作者: 盗梦者_56f2 | 来源:发表于2019-02-05 18:39 被阅读2次

    背景

    在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(single point of failure,缩写SPOF)。每个群集都有一个NameNode,如果该机器或进程变得不可用,整个群集将无法使用,直到NameNode重新启动或在单独的计算机上启动。
    这主要在两个方面影响了HDFS集群的总体可用性:

    • 对于计划外事件(例如计算机崩溃),在操作员重新启动NameNode之前,群集将不可用。
    • 计划维护事件(如NameNode计算机上的软件或硬件升级)将导致群集停机一段时间。
      HDFS高可用性功能通过提供在具有热备用的 Active/Passive 配置中的同一群集中运行两个冗余NameNode的选项来解决上述问题。这允许在机器崩溃的情况下快速故障转移到新的NameNode,或者为了有计划的维护而让管理员优雅地启动故障转移。

    架构体系

    在典型的HA群集中,两台独立的计算机配置为NameNode。 在任何时间点,其中一个NameNode处于活动(Active)状态,另一个处于待机(Standby)状态。 Active NameNode负责集群中的所有客户端操作,而Standby只是充当从属服务器,维持足够的状态以在必要时提供快速故障转移。
    为了使备用节点保持的状态与Active节点的状态同步,两个节点都与一组(节点个数为奇数)称为“JournalNodes”(JN)的单独守护进程通信。 当Active节点执行任何名称空间修改时,它会将修改记录持久地记录到大多数这些JN中。 待机节点能够从JN读取编辑,并且不断观察它们对编辑日志的更改。 当备用节点看到编辑时,它会将它们应用到自己的命名空间。 如果发生故障转移,Standby将确保在将自身转为Active状态之前已从JournalNodes读取所有编辑内容。 这可确保在发生故障转移之前完全同步命名空间状态。
    为了提供快速故障转移,备用节点还必须具有关于群集中块位置的最新信息。 为了实现这一点,DataNode配置了两个NameNode的位置信息,并向两者发送块位置信息和心跳。
    对于HA群集的正确操作而言,一次只有一个NameNode处于活动状态至关重要。 否则,命名空间状态将在两者之间快速分歧,会有数据丢失或其他不正确结果的风险。 为了确保这个属性并防止所谓的“脑裂情景”,JournalNodes只允许一个NameNode一次成为一个writer。 在故障转移期间,要激活的NameNode将简单地接管写入JournalNodes的角色,这将有效地阻止其他NameNode继续处于Active状态,从而允许新的Active安全地进行故障转移。

    角色

    要部署HA群集,您应准备以下内容:

    • 处于NameNode角色的计算机 - 运行Active和Standby NameNode的计算机应具有彼此相同的硬件,以及与非HA集群中使用的硬件相同。
    • 处于JournalNode角色的一组计算机 - 运行JournalNodes的计算机。 JournalNode守护程序相对轻量级,因此这些守护程序可以合理地与其他Hadoop守护程序并置在机器上,例如NameNodes,JobTracker或YARN ResourceManager。注意:必须至少有3个JournalNode守护进程,因为编辑日志修改必须写入大多数JN。这将允许系统容忍单个机器的故障。您还可以运行3个以上的JournalNodes,但为了实际增加系统可以容忍的失败次数,您应该运行奇数个JN(即3,5,7等)。请注意,当有N 个JournalNodes运行时,系统最多可以容忍(N-1)/ 2个进程故障并继续正常运行。
      请注意,在HA群集中,备用NameNode还会执行命名空间状态的检查点,因此无需在HA群集中运行Secondary NameNode,CheckpointNode或BackupNode。 事实上,如果这样做会是一个错误。

    配置

    配置见官方文档https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

    HDFS HA之NFS

    为了使备用节点保持的状态与活动节点状态同步,要求两个节点都可以访问共享存储设备(shared storage device )上的目录(例如,来自NAS的NFS安装)。
    Shared storage(共享存储) - 需要拥有一个共享目录,所有NameNode计算机可以对其进行读/写访问。 通常,这是一个支持NFS的远程文件管理器,并安装在每个NameNode计算机上。 目前仅支持单个共享编辑目录。 因此,系统的可用性受到此共享编辑目录的可用性的限制,因此为了移除所有单点故障,共享编辑目录需要冗余。 具体而言,存储的多个网络路径以及存储本身(磁盘,网络和电源)的冗余。 因此,建议共享存储服务器是高质量的专用NAS设备,而不是简单的Linux服务器。
    配置见官方文档https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html

    相关文章

      网友评论

        本文标题:HDFS高可用性之QJM & NFS

        本文链接:https://www.haomeiwen.com/subject/pssvsqtx.html