Hadoop基础教程-第9章 HA高可用(9.1 HDFS 高可用介绍)(草稿)

来源:互联网 发布:linux网络服务起不来 编辑:程序博客网 时间:2024/05/23 02:01

第9章 HA高可用

9.1 HDFS 高可用介绍


HDFS HA(High Availability)高可用配置官方参考网址
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

9.1.1 背景

Prior to Hadoop 2.0.0, the NameNode was a single point of failure (SPOF) in an HDFS cluster. Each cluster had a single NameNode, and if that machine or process became unavailable, the cluster as a whole would be unavailable until the NameNode was either restarted or brought up on a separate machine.
在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。 每个集群都有一个NameNode,如果该机器或进程变得不可用,则整个集群将不可用,直到NameNode重新启动或在单独的计算机上启动。

下面两个方面影响了HDFS集群的总体可用性:

  • In the case of an unplanned event such as a machine crash, the cluster would be unavailable until an operator restarted the NameNode. 在计划外事件(如机器崩溃)的情况下,集群将不可用,直到操作员重新启动NameNode。
  • Planned maintenance events such as software or hardware upgrades on the NameNode machine would result in windows of cluster downtime. NameNode机器上的计划维护事件(如软件或硬件升级)将导致集群停机的窗口。

The HDFS High Availability feature addresses the above problems by providing the option of running two redundant NameNodes in the same cluster in an Active/Passive configuration with a hot standby. This allows a fast failover to a new NameNode in the case that a machine crashes, or a graceful administrator-initiated failover for the purpose of planned maintenance.
HDFS高可用性功能通过提供在具有热备用的主动/被动配置中的同一集群中运行两个冗余名称节点的选项来解决上述问题。 这允许在机器崩溃的情况下快速故障转移到新的NameNode,或者为了计划维护而对管理员启动的优化转换进行了优雅。

9.1.2 架构

在典型的HA群集中,将两个单独的机器配置为NameNodes。在任何时间点,其中一个NameNodes处于活动状态,另一个处于待机状态。Active NameNode负责集群中的所有客户端操作,而Standby仅作为从站,维护足够的状态以在必要时提供快速故障转移。

为了使备用节点将其状态与Active节点保持同步,两个节点与一组名为“JournalNodes”(JN)的单独守护程序进行通信。当Active节点执行任何命名空间修改时,它可以将修改的记录持久记录到大多数这些JN。备用节点能够读取JN的编辑,并且不断地观察它们对编辑日志的更改。当待机节点看到编辑时,它将它们应用于自己的命名空间。在发生故障切换的情况下,待机将确保在将其自身升级到活动状态之前,它已经读取了JounalNodes中的所有编辑。这将确保名称空间状态在发生故障转移之前完全同步。

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

对于HA群集的正确操作至关重要,因此一次只能有一个NameNodes处于活动状态。否则,命名空间状态将在两者之间迅速分歧,冒数据丢失或其他不正确的结果。为了确保这个属性并防止所谓的“分裂大脑情景”,JournalNodes将只允许一个NameNode作为一个作者。在故障切换期间,要变为活动状态的NameNode将简单地接管写入JournalNodes的角色,这将有效地防止其他NameNode继续处于活动状态,允许新的Active安全地进行故障切换。

这里写图片描述

9.1.3 硬件资源

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

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

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

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

原创粉丝点击