1.概述

在这个Hadoop教程中,我们将讨论Hadoop高可用性功能。 本教程介绍Hadoop高可用性,Hadoop实现的高可用性,遗留系统中的问题以及Hadoop中的高可用性示例。

2. Hadoop高可用性 – 简介

HDFS是一个分布式文件系统。 它通过创建文件的副本在集群中的节点之间分发数据。 这些文件复本存储在HDFS群集中的其他机器上。 因此,无论何时用户想要访问数据,都可以从群集中存在的多台机器访问该数据,这些数据在群集中最近的节点中很容易找到。 同样在一些不利条件下,如节点故障,用户可以轻松地从其他节点访问其数据。 因为HDFS在HDFS集群中存在的其他节点上创建用户数据的副本。

3. Hadoop如何实现高可用性?

由于HDFS集群中有多个DataNode,并且在确定的时间间隔之后,所有这些DataNode都会向NameNode发送心跳消息,并且如果NameNode停止从这些DataNode中的任何一个接收心跳消息,则会认为它已死亡。然后它检查这些节点中存在的数据,然后将命令发送给其他数据节点(具有相同的数据,这些数据在失败的节点上可用)以创建该数据的副本到其他数据节点。因此数据总是可用的。

因此,无论何时用户要求在HDFS中进行数据访问,NameNode首先都会搜索该数据节点中的数据,其中的数据可以快速获取,并向用户提供对该数据的访问权限。用户不必搜索所有datanode中的数据。 Namenode本身通过提供用户可以直接阅读的数据节点的地址,使得用户更容易获得数据。

4. Hadoop高可用性示例

HDFS提供高可用性的数据。每当用户请求访问NameNode的数据时,NameNode会搜索所有可用数据的节点。然后从数据快速可用的节点向用户提供对该数据的访问。在搜索群集中所有节点上的数据时,如果NameNode发现某个节点已死,则无需用户了解,NameNode会将用户重定向到其中具有相同数据的其他节点。没有任何中断,数据可供用户使用。因此,在节点故障的情况下,数据对用户来说也是高度可用的。另外,任何单个节点故障都不会影响应用程序。

5.遗留系统中存在哪些问题?

由于机器崩溃导致数据不可用。

用户必须等待很长一段时间才能访问他们的数据,有时候用户需要等待一段时间直到网站上线。

由于数据缺乏,组织的许多重大项目的完成都会延长很长一段时间。 因此公司必须经历紧急情况。

有限的功能和功能。

Hadoop HDFS中的NameNode高可用性

6.介绍HDFS NameNode

Hadoop分布式文件系统-HDFS是世界上最可靠的存储系统。 HDFS是Hadoop的文件系统,用于存储非常大的文件。

HDFS体系结构遵循主/从拓扑,其中主节点是NameNode,从节点是DataNode。 Namenode存储元数据,即块的数量,它们的位置,副本和其他细节。这个元数据在主内存中可用,以便更快地检索数据。 NameNode维护和管理从节点,并为它们分配任务。它应该部署在可靠的硬件上,因为它是HDFS的核心。

在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集都有一个NameNode,并且如果NameNode失败,整个群集将会退出服务。在NameNode重新启动或引入单独的计算机之前,群集将不可用。

通过以下方式NameNode SPOF问题限制可用性:

计划的维护活动(如Namenode上的软件或硬件升级)将导致Hadoop集群停机。

如果有任何计划外事件触发,例如机器崩溃,则除非操作员重新启动新名称节点,否则群集将为“不可用”。

现在让我们继续使用NameNode高可用性功能

7. Hadoop NameNode高可用性架构

HDFS NameNode高可用性体系结构

Hadoop 2.0通过为许多NameNode提供支持来克服这个SPOF。 HDFS NameNode高可用性体系结构提供了在具有热备份的主动/被动配置中的同一集群中运行两个冗余NameNode的选项。

Active NameNode – 它处理群集中的所有客户端操作。

Passive NameNode – 它是一个备用名称节点,它具有与活动NameNode相似的数据。它充当奴隶,保持足够的状态以在必要时提供快速故障转移。

如果主动NameNode失败,则被动NameNode将承担主动节点的所有责任,集群继续工作。

维护HDFS高可用性集群一致性的问题如下:

活动和备用NameNode应始终保持相互同步,即它们应具有相同的元数据。此许可证将Hadoop集群恢复到崩溃的相同命名空间状态。这将为我们提供快速故障转移。

一次只能有一个NameNode处于活动状态。否则,两个NameNode会导致数据损坏。

8.  NameNode高可用性架构的实现

在HDFS NameNode高可用性架构中,两个NameNodes同时运行。我们可以通过以下两种方式实现活动和备用NameNode配置:

使用Quorum日记节点

使用共享存储

8.1 使用Quorum日记节点

QJM是一个HDFS实现。它旨在提供编辑日志。它允许在活动的名称节点和备用名称节点之间共享这些编辑日志。

对于高可用性,备用名称节点与活动名称节点进行通信并与其同步。它发生在一组称为“日志节点”的节点或守护进程中。 QJM作为一组日志节点运行。应该至少有三个日志节点。

对于N个日志节点,系统最多可以容忍(N-1)/ 2次故障并继续运行。因此,对于三个日志节点,系统可以容忍其中一个{(3-1)/ 2}的故障。

当活动节点执行任何修改时,它将修改记录到所有日志节点。

备用节点从日志节点读取编辑并以可靠方式应用于其自己的名称空间。在故障转移的情况下,备用数据库将确保它在将自己提升为活动节点之前从日志节点读取所有编辑。这确保了名称空间状态在发生故障之前完全同步。

为了提供快速故障转移,备用节点必须具有关于群集中数据块位置的最新信息。为此,名称节点的IP地址可用于所有数据节点,并且它们将块位置信息和心跳发送给NameNode。

8. 2 Fencing (隔离) NameNode

要正确操作HA群集,一次只能激活其中一个名称节点。否则,名称空间状态会在两个名称节点之间出现偏差。因此,命名节点隔离可以确保群集中只有一个活动的命名节点。

日志节点一次只允许一个namenode作为写入者来执行此隔离。

备用名称节点负责写入日志节点,并禁止任何其他名称节点保持活动状态。

最后,新的活动名称节点可以执行其活动。

9 . 使用共享存储

备用和活动名称节点通过使用“共享存储设备”相互同步。对于此实现,活动名称节点和备用名称节点都必须能够访问共享存储设备上的特定目录(即。网络文件系统)。

当活动的namenode执行任何名称空间修改时,它会将修改记录记录到存储在共享目录中的编辑日志文件。备用名称节点监视此目录以进行编辑,并且在发生编辑时,备用名称节点将它们应用于其自己的名称空间。在失败的情况下,备用名称节点将确保它在将自身提升为活动状态之前从共享存储中读取所有编辑。这确保了在发生故障转移之前命名空间状态已完全同步。

10 . NameNode高可用性 – 结论

在结束关于NameNode高可用性的这章之后,我会说Hadoop 2.0 HDFS HA提供了单个活动名称节点和单一备用名称节点。但是一些部署需要高度的容错性。 Hadoop的新版本3.0,允许用户运行多个备用名称节点。例如,配置五个journalnode和三个namenode。因此,hadoop集群能够容忍两个命名节点而不是一个节点的故障。



关注微信服务号,手机看文章
关注微信服务号,手机看文章