HDFS概述(5)————HDFS HA

HA With QJM

目标

本指南概述了HDFS高可用性(HA)功能以及如何使用Quorum Journal Manager(QJM)功能配置和管理HA HDFS集群。

本文档假设读者对HDFS集群中的一般组件和节点类型有一般的了解。有关详细信息,请参阅HDFS架构指南。

本指南讨论如何使用Quorum Journal Manager(QJM)配置和使用HDFS HA,以在Active和Standby NameNodes之间共享编辑日志

背景

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

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

  在计算机事件(例如机器崩溃)的情况下,集群将不可用,直到操作员重新启动NameNode。

  NameNode机器上的计划维护事件(如软件或硬件升级)将导致集群停机时间的窗口。

HDFS高可用性功能通过提供在具有热备用的主动/被动配置中的同一集群中运行两个冗余名称节点来解决上述问题。这允许在机器崩溃的情况下快速故障切换到新的NameNode,或者为了计划维护而对管理员启动的优化优雅转换。

架构

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

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

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

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

硬件资源

为了部署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的硬件。

部署

配置概述

与联邦配置类似,HA配置向后兼容,并允许现有的单个NameNode配置工作,无需更改。新配置被设计为使得集群中的所有节点可以具有相同的配置,而不需要基于节点的类型将不同的配置文件部署到不同的机器。

像HDFS联盟一样,HA集群重新使用名称服务ID来标识单个HDFS实例,其实际上可能由多个HA名称节点组成。另外,一个称为NameNode ID的新抽象与HA一起添加。群集中的每个不同的NameNode具有不同的NameNode ID来区分它。为了支持所有NameNodes的单个配置文件,相关配置参数后缀名称服务ID以及NameNode ID。

配置细节

要配置HA NameNodes,必须在hdfs-site.xml配置文件中添加多个配置选项。

您设置这些配置的顺序不重要,但是您为dfs.nameservices和dfs.ha.namenodes.[nameservice ID]选择的值将决定随后的键。因此,在设置其余的配置选项之前,您应该决定这些值。

dfs.nameservices  新服务的逻辑名称

   为此名称服务器选择一个逻辑名称,例如“mycluster”,并使用此逻辑名称作为此配置选项的值。你选择的名字是任意的。它将用于配置和集群中绝对HDFS路径的权限组件。

   注意:如果您还使用HDFS联合,则此配置设置还应包含其他名称服务(HA或其他)的列表,以逗号分隔列表。

<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

dfs.ha.namenodes.[nameservice ID]   名称服务中每个NameNode的唯一标识符

使用以逗号分隔的NameNode ID的列表进行配置。DataNodes将使用它来确定集群中的所有NameNodes。例如,如果以前使用“mycluster”作为nameervice ID,并且想要使用“nn1”和“nn2”作为NameNodes的个别ID,则可以将其配置为:

HA With NFS

目标

本指南概述了HDFS高可用性(HA)功能,以及如何配置和管理HA HDFS集群,使用NFS作为NameNodes所需的共享存储。

本文档假设读者对HDFS集群中的一般组件和节点类型有一般的了解。有关详细信息,请参阅HDFS架构指南。

架构

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

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

当Active节点执行任何命名空间修改时,它可以将修改的记录持久记录到共享目录中存储的编辑日志文件中。待机节点一直在观看此目录以进行编辑,并且当它看到编辑时,它将其应用于其自己的命名空间。在故障切换的情况下,待机将确保已经从共享存储中读取所有编辑,然后再将其自身升级到活动状态。这将确保名称空间状态在发生故障转移之前完全同步。

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

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

硬件资源

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

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

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

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

时间: 2024-07-30 18:15:41

HDFS概述(5)————HDFS HA的相关文章

HDFS 和 YARN 的 HA 故障切换【转】

来源:https://blog.csdn.net/u011414200/article/details/50336735 一 非 HDFS HA 集群转换成 HA 集群二 HDFS 的 HA 自动切换命令1 获得当前 NameNode 的 active 和 standby 状态2 NameNode 的 active 和 standby 状态切换3 HDFS HA自动切换比手工切换多出来的步骤三 ResourceManager 的 HA 自动切换命令1 获得当前 RM 的 active 和 sta

HDFS Federation和NameNode HA的搭建

1. HDFS Federation产生背景 在Hadoop 1.0中,HDFS的单NameNode设计带来诸多问题,包括单点故障.内存受限制约集群扩展性和缺乏隔离机制(不同业务使用同一个NameNode导致业务相互影响)等,为了解决这些问题,Hadoop 2.0引入了基于共享存储的HA解决方案和HDFS Federation,这里重点介绍HDFS Federation. HDFS Federation是指HDFS集群可同时存在多个NameNode,这些NameNode分别管理一部分数据,且共享

HDFS概述(2)————Block块大小设置

参考: HDFS概述(4)----HDFS权限 HDFS概述(3)----HDFS Federation HDFS概述(1)----HDFS架构 问题 Q: 一个常被问到的一个问题是: 如果一个HDFS上的文件大小(file size) 小于块大小(block size) ,那么HDFS会实际占用Linux file system的多大空间? A: 答案是实际的文件大小,而非一个块的大小. 以下内容转自: http://blog.csdn.net/samhacker/article/detail

第六章 HDFS概述

6.1.2 HDFS体系结构 HDFS采用主从结构,NameNode(文件系统管理者,负责命名空间,集群配置,数据块复制), DataNode(文件存储的基本单元,以数据块形式保存文件内容和数据块的数据校验信息,执行底层数据块IO操作), Client(和名字节点,数据节点通信,访问HDFS文件系统,操作文件), SecondaryNameNode 1.数据块 Linux的Ext3块默认的大小4096字节,HDFS块默认64M,副本数为3,数据块的好处:文件保存在不同的磁盘上,简化存储子系统,方

利用QJM实现HDFS自动主从切换(HA Automatic Failover)源码详析

最近研究了下NameNode HA Automatic Failover方面的东西,当Active NN因为异常或其他原因不能正常提供服务时,处于Standby状态的NN就可以自动切换为Active状态,从而到达真正的高可用 NN HA Automatic Failover架构图 为了实现自动切换,需要依赖ZooKeeper和ZKFC组件,ZooKeeper主要用来记录NN的相关状态信息,zkfc组件以单独的JVM进程的形式运行在NN所在的节点上.下面首先分析下NN的启动流程,NN对象在实例化过

Hadoop之HDFS(概述和Shell操作)

HDFS概述 HDFS组成架构 HDFS文件块大小   HDFS的Shell操作(开发重点) 1.基本语法 bin/hadoop fs 具体命令   OR  bin/hdfs dfs 具体命令 dfs是fs的实现类. 2.命令大全 $ bin/hadoop fs [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-

HDFS概述

该文章参考 Hadoop权威指南 引言 随着数据爆炸式增长,数据的存储和分析作为一个大的难题.多年来硬盘存储容量增长的同时,访问速度-数据从硬盘读取的速度,未内与时俱进.比如1990年, 一个磁盘存储1370M需要4.4MB/s的速度,我们只需5分钟就能读取整个磁盘的 数据.20年过去了,1TB(=1024GB)级别的磁盘驱动器很正常.传输的速度在100MB/s左右, 因此需要2个半小时以上的时间才能读取整个驱动器的数据.从一个磁盘驱动器读取所有数据需要花那么长时间,写更慢.一个简单的解决方法是

大数据-Hadoop生态(5)-HDFS概述

HDFS产生背景 HDFS优缺点 HDFS组成架构 HDFS文件块大小 原文地址:https://www.cnblogs.com/duoduotouhenying/p/10084446.html

HDFS概述(一)

1. HDFS产出的背景及定义 1.1 HDFS产生的背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统.HDFS只是分布式文件管理系统中的一种. 1.2 HDFS的定义 HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件:其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器