CN105007172A - 一种hdfs高可用性方案的实现方法 - Google Patents
一种hdfs高可用性方案的实现方法 Download PDFInfo
- Publication number
- CN105007172A CN105007172A CN201510281638.1A CN201510281638A CN105007172A CN 105007172 A CN105007172 A CN 105007172A CN 201510281638 A CN201510281638 A CN 201510281638A CN 105007172 A CN105007172 A CN 105007172A
- Authority
- CN
- China
- Prior art keywords
- namenode
- standby
- active
- hdfs
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0695—Management of faults, events, alarms or notifications the faulty arrangement being the maintenance, administration or management system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种采用热备NameNode的HDFS高可用方案的实现方法。本发明在原有HDFS架构的基础上,引进一个热备的NameNode节点,即Standby?NameNode。系统通过不断同步Acitve?NameNode与Standby?NameNode内存中的元数据,以保持名字空间的一致性。本发明在切换NameNode的时候仅导入EditLog中的数据,降低了HDFS在切换时候所需要的时间。在Active?NameNode掉线不可用的时候,系统能够自动且快速的切换到Standby?NameNode。本发明可以用于为Hadoop分布式文件系统提供高可用性服务。
Description
技术领域
本发明涉及Hadoop分布式文件系统高可用性领域,关于一种引入热备NameNode的HDFS高可用性方案的实现方法。
背景技术
Hadoop提供了一个能够运行在商用PC机上的Hadoop分布式文件系统HDFS。它为应用程序提供了很高的吞吐量,这非常适合于大规模数据的处理。HDFS在设计之初便提出了这样一个假设:将计算移动到数据端比将数据移动到计算端更加廉价。其中的核心思想便是把大量的应用计算移动到数据所存储的地方,然后在这些数据上面执行这些计算,这样便大大提高Hadoop的吞吐量 。
其中HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)是 Hadoop 框架的一个底层模块,Hadoop的其它部分组件,如针对分布式计算的编程模型 Map/Reduce框架、用于存储结构化数据的非关系型数据库HBase等等,都是基于HDFS之上。该分布式文件系统具有高容错的特点,并且设计的初衷便是用来部署在廉价的硬件之上。HDFS 可以提供高吞吐量的数据访问,这样一来,就非常适合用于处理海量数据集上的程序应用。
HDFS 采用的是经典的 主/从Master/Slave 架构,在一个搭建了 HDFS 的集群中,往往是由一个 NameNode节点和一定数目的 DataNodes 节点组成的。NameNode 是 HDFS 系统的核心,它是一个元数据服务器,用来管理文件系统中的命名空间以及处理客户端对文件系统的访问请问。采用单一的 NameNode 服务器,优点便是容易实现,并且可以简单有效的来管理元数据。但同时也暴露出 HDFS 系统的一个致命弱点,存在着一个SPOF(Single Point Of Failure)问题,即HDFS的中心服务器NameNode是单点的,它的崩溃,轻则使系统耗费数小时的时间重启,以至文件系统不可访问,重则丢失所有的文件数据。
Hadoop当时设计的初衷便是将其部署在廉价的机器之上的,硬件错误被当成一种常态而不是异常,因此由于 NameNode服务器的硬件故障而导致整个分布式集群崩溃的可能性是存在的 。除了上述不可控制的意外,在现实中,很多时候,节点的下线并非是这些不可控制的意外,而是一些有计划的关机或者软硬件的升级。对一些Hadoop实时应用来说,集群的不间断服务显得尤为重要。在Hadoop中,由于NameNode是一个关键节点,就需要对NameNode构建高可用方案。
发明内容
本发明的目的在于:鉴于现有方法存在的上述问题,提出了一个高可用的HDFS解决方案,解决HDFS中NameNode单点故障问题,在Active NameNode失效后,能够自动切换到Standby NameNode,接管Active NameNode之前的工作,对外提供服务,而无需人工干预。
本发明解决其技术问题的技术方案是:
1、元数据同步:
在文件系统中,文件和目录是文件系统的基本元素。在本发明中,将这些元素被抽象成INode,每一个文件或目录都对应一个唯一的INode,INode存储了名字信息(分别对应文件或目录的名字),创建时间、修改时间、父目录等信息,这些都是目录和文件的一些公共属性。有了INode信息,就可以构建整个文件系统的层次结构,并保存每个文件或目录的属性信息,用户就可以对文件和目录进行创建、删除等操作。这些储存在内存中的INode信息即为内存元数据。
本发明提出一种元数据同步的机制来保持Standby NameNode与Active NameNode的名字空间的一致性。在这里,该机制分为两个步骤:
1) Standby NameNode冗余记录下Client发来的命令,于是在集群中也多了一份EditLog文件,提高了EditLog的可靠性。
2) Active NameNode在它的EditLog命令数目超过一定阈值后,自动与Standby NameNode的EditLog进行同步。
2、失效备援:
1) 失效检测
本发明采用心跳信息机制来检测Active NameNode是否失效。每个DataNode会向Active NameNode发送心跳信息,如果Active NameNode长时间未收到该DataNode发来的心跳信息,那么Active NameNode会认为此DataNode已经不可用,不再将新IO请求转发到这些数据节点上,并将该DataNode标记为不可用。如果Active NameNode收到心跳信息,那么Active NameNode会对此心跳信息做出响应。该DataNode在收到Active NameNode发来的心跳响应信息后,等待一段时间t后继续发送心跳信息。如果该DataNode在超过时间t后未收到Active NameNode发来的响应信息,那么表明该Active NameNode已经失效,此时系统需要进行切换NameNode。
2) 请求Standby NameNode
DataNode在检测到Active NameNode失效之后,将该Active NameNode的状态标记为不可用。然后查询内存中的IpTable,找到Standby NameNode的Ip地址进行连接。如果连接成功,则向该Standby NameNode发送服务请求,Standby NameNode在收到该请求后,响应该服务请求。
3) 接管集群
Standby NameNode在收到连接请求之后,将扫描EditLog文件,将EditLog中的所有命令操作与内存中元数据进行合并。导入完成之后,Standby NameNode便转入Active状态,成为新的Active NameNode,为集群提供服务。
本发明的有益效果:
1、本发明能够完全移除集群中的单点故障问题,即集群中任意一个节点失效均不影响集群的继续运行。
2、本发明通过在HDFS运行过程中周期性地同步两台NameNode的元数据,大大降低系统在切换时候所需要的时间。
3、本发明能够自动检测已经失效的NameNode, 并自动切换到热备的NameNode,而无需人工切换。
附图说明
图1是本发明的总体架构图。
图2是本发明的失效切换流程图。
具体实施方式
下面结合附图和具体实施应用过程对本发明进一步说明:
参照图1总体架构图介绍本发明的实现细节:
在本发明中,NameNode是整个集群的中心节点,存储了整个文件系统的元数据。NameNode还负责维护整个名字空间,以及响应客户端的读写请求。DataNode则是一个存储了具体应用数据的节点。在HDFS中,系统将超过一定大小的文件分成一个个固定大小的数据块存储在DataNode上。并且通常这些数据块都有多个备份存储在不同的DataNode上面,以防DataNode的失效所导致数据块的不可用。
在NameNode中,为了访问性能,把所有的元数据都驻留在内存中。所以同DataNode相比,NameNode需要更多的内存。对文件系统的操作,如创建,读取和写入都是由DataNode根据NameNode所发来的指令完成。NameNode使用叫做EditLog的事务日志来记录每一个对文件系统元数据的改变,如在HDFS中创建一个新的文件,NameNode将会在EditLog中插入一条记录来记录这个改变。整个文件系统命名空间,包括文件块的映射表和文件系统的配置都存在一个叫FsImage的文件中。
在NameNode初始化过程中,NameNode将从磁盘中读取FsImage(文件系统镜像文件)文件,并应用到内存中,在内存中生成元数据。然后向集群中所有DataNode广播上线通知,表明该NameNode可用,DataNode在收到该通知后,会将该NameNode加入到可用NameNode列表中,以供切换的时候查询可用NameNode使用。随后NameNode便转入Standby状态。NameNode在处于Stanby状态时,如果收到DataNode发来的请求,那么转入Active状态,为集群提供服务,否则一直驻留在Stanby状态。
DataNode将HDFS数据存储到本地的文件系统中。DataNode并不知道HDFS文件的存在,它在本地文件系统中以单独的文件存储每一个HDFS文件的数据块。DataNode不会将所有的数据块文件存放到同一个目录中,而是启发式的检测每一个目录的最优文件数,并在适当的时候创建子目录。当DataNode启动的时候,它将扫描它的本地文件系统,根据本地的文件产生一个所有HDFS数据块的列表并报告给NameNode,这个报告称作块报告Block report。
由于所有的元数据都位于内存,其大小随文件系统的规模增大而增大,而NameNode在启动时候会导入这些元数据,因此NameNode的启动时间也随着元数据大小的增大而增大。比如当集群运行若干时间后,NameNode内存中的元数据大小也将达到一定的规模,这时这台NameNode的冷启动将会耗费相当多的时间。对于这个问题,本系统引入了一个热备NameNode,即Standby NameNode。由于Standby NameNode在初始化的时候已经完成对FsImage的导入,故无需再次导入FsImage,大大降低系统的切换时间。
在系统运行的时候,当客户应用程序在涉及到访问文件系统的时候,会同时向Active NameNode和Standby NameNode发送命令请求。这两台NameNode在收到Client的命令请求之后,都会将这个命令请求记录在Editlog中。Active NameNode会去执行这个命令,但是Standby NameNode并不去执行,仅仅做一个记录。虽然这会增加一定的通信开销,但是同Client与DataNode的数据通信相比,几乎可以忽略不计。这样一旦Active NameNode失效,系统切换到Standby NameNode的时候,Standby NameNode可以将这些Editlog合并到元数据中,这样可使Standby NameNode的元数据保持最新版本。Active NameNode在执行完毕后便会将结果返回给Client,所以Client仅会收到一个结果。
为了保持两台NameNode名字空间的一致性,当Active NameNode中的EditLog的命令请求数超过一定数量阈值n(n可在配置文件中设置)的时候,Active NameNode将整个EditLog发送给Standby NameNode。Standby NameNode在收到这份的EditLog之后,会读取EditLog中的所有操作,然后将其合并到内存元数据中。在同步成功后,Active NameNode和Standby NameNode均会清空各自的EditLog,并重新开始记录Client所发来的命令请求。这样一方面能防止EditLog的无限增大,另一方面能大大减小元数据同步的性能和时间开销。
参照图2失效切换流程图介绍本发明的失效切换的具体流程:
在集群中,所有的NameNode和DataNode都会在内存中维护一张Ip地址表,叫做IpTable。这张表记录了集群中所有的NameNode和DataNode的Ip地址。以及该节点的状态信息,可用或者不可用,以作为NameNode或者DataNode的通信依据。
步骤1.启动DataNode。
步骤2.初始化DataNode,导入IpTable等配置信息,并扫描本机文件系统,生成块报告,然后选择其中一个可用NameNode的Ip地址。
步骤3.对这个选定的NameNode进行连接。
步骤4.如果连接成功,则向该NameNode发送请求提供服务消息,否则将该NameNode标记为不可用并选择下一个NameNode的Ip地址,然后转步骤3。
步骤5.如果收到请求响应消息,则向该NameNode发送块报告,并调用工作守护线程。否则将该NameNode标记为不可用并选择下一个NameNode的Ip地址,然后转步骤3。
步骤6.每隔一段时间向该NameNode发送心跳信息,如果未收到心跳响应信息,则将该NameNode标记为不可用并选择下一个NameNode的Ip地址,然后转步骤3。
本发明解决HDFS中单点故障问题,在HDFS中,任何一个节点失效后,系统仍能继续对外提供服务。同时提供对Active NameNode热备的功能,保证自动发现Active NameNode宕机,并且能够进行自动切换,继续对客户应用程序提供文件系统服务。同时采用高可靠元数据,系统中将有两份相同的元数据,任何一份元数据损坏,可立即启用另外一份元数据。
Claims (1)
1.一种采用热备NameNode的HDFS高可用方案的实现方法,其特征在于:该方法引入一个热备的NameNode,这些NameNode将具有两种状态,一种是Active状态,一种是Standby状态;处于Active状态的NameNode便为Active NameNode,此时这个Active NameNode与原始NameNode的工作一样,维护整个系统的名字空间,并对外界提供服务;处于Standby状态的NameNode便为Standby NameNode,而这个Standby NameNode仅负责维护整个系统的名字空间,并不对外提供服务;并且这两种状态是可以相互转换的,如一旦Active NameNode失效,系统切换到Standby NameNode后,这个Standby NameNode便由Standby状态转换到了Active状态,成了Active NameNode,接管集群所有工作,原先失效的Active NameNode经过人工恢复后,重新加入到集群中时,直接进入Standby状态,成为Standby NameNode,以供下次进行切换,其具体步骤为:
步骤1:NameNode将从磁盘中读取文件系统镜像文件,并应用到内存中,在内存中生成元数据;
步骤2:NameNode向集群中所有DataNode广播上线通知,表明该NameNode可用,DataNode在收到该通知后,会将该NameNode加入到可用NameNode列表中,以供切换的时候查询可用NameNode使用;
步骤3:NameNode便转入Standby状态;NameNode在处于Stanby状态时,如果收到DataNode发来的请求,那么转入Active状态,为集群提供服务,否则一直驻留在Stanby状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510281638.1A CN105007172A (zh) | 2015-05-28 | 2015-05-28 | 一种hdfs高可用性方案的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510281638.1A CN105007172A (zh) | 2015-05-28 | 2015-05-28 | 一种hdfs高可用性方案的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105007172A true CN105007172A (zh) | 2015-10-28 |
Family
ID=54379699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510281638.1A Pending CN105007172A (zh) | 2015-05-28 | 2015-05-28 | 一种hdfs高可用性方案的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105007172A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017107984A1 (zh) * | 2015-12-25 | 2017-06-29 | 中兴通讯股份有限公司 | 一种数据恢复方法及装置 |
CN108737156A (zh) * | 2018-04-08 | 2018-11-02 | 广东睿江云计算股份有限公司 | 一种基于多对等NameNode分布式文件系统及写入方法 |
CN109831540A (zh) * | 2019-04-12 | 2019-05-31 | 成都四方伟业软件股份有限公司 | 分布式存储方法、装置、电子设备及存储介质 |
US11063882B2 (en) | 2019-08-07 | 2021-07-13 | International Business Machines Corporation | Resource allocation for data integration |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102638566A (zh) * | 2012-02-28 | 2012-08-15 | 山东大学 | 一种基于云存储的blog系统运行方法 |
US20130151884A1 (en) * | 2011-12-09 | 2013-06-13 | Promise Technology, Inc. | Cloud data storage system |
CN103491192A (zh) * | 2013-09-30 | 2014-01-01 | 北京搜狐新媒体信息技术有限公司 | 一种分布式系统的Namenode切换方法和系统 |
CN104461865A (zh) * | 2014-11-04 | 2015-03-25 | 哈尔滨工业大学 | 云环境下分布式文件系统可靠性测试套件 |
CN104461792A (zh) * | 2014-12-03 | 2015-03-25 | 浪潮集团有限公司 | 一种解决hadoop分布式文件系统namenode单点故障的ha方法 |
CN104601693A (zh) * | 2015-01-13 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 一种分布式系统中响应操作指令的方法和装置 |
-
2015
- 2015-05-28 CN CN201510281638.1A patent/CN105007172A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151884A1 (en) * | 2011-12-09 | 2013-06-13 | Promise Technology, Inc. | Cloud data storage system |
CN102638566A (zh) * | 2012-02-28 | 2012-08-15 | 山东大学 | 一种基于云存储的blog系统运行方法 |
CN103491192A (zh) * | 2013-09-30 | 2014-01-01 | 北京搜狐新媒体信息技术有限公司 | 一种分布式系统的Namenode切换方法和系统 |
CN104461865A (zh) * | 2014-11-04 | 2015-03-25 | 哈尔滨工业大学 | 云环境下分布式文件系统可靠性测试套件 |
CN104461792A (zh) * | 2014-12-03 | 2015-03-25 | 浪潮集团有限公司 | 一种解决hadoop分布式文件系统namenode单点故障的ha方法 |
CN104601693A (zh) * | 2015-01-13 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 一种分布式系统中响应操作指令的方法和装置 |
Non-Patent Citations (2)
Title |
---|
THE APACHE SOFTWARE FOUNDATION: "HDFS high availability", 《APACHE HADOOP PROJECT DISK POM》 * |
ZHANYE WANG,ZHANYE WANG: "Using Multiple Active Namenodes to Achieve High Availability for HDFS", 《IEEE XPLORE DIGITAL LIBRARY》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017107984A1 (zh) * | 2015-12-25 | 2017-06-29 | 中兴通讯股份有限公司 | 一种数据恢复方法及装置 |
CN108737156A (zh) * | 2018-04-08 | 2018-11-02 | 广东睿江云计算股份有限公司 | 一种基于多对等NameNode分布式文件系统及写入方法 |
CN109831540A (zh) * | 2019-04-12 | 2019-05-31 | 成都四方伟业软件股份有限公司 | 分布式存储方法、装置、电子设备及存储介质 |
US11063882B2 (en) | 2019-08-07 | 2021-07-13 | International Business Machines Corporation | Resource allocation for data integration |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106713487B (zh) | 数据的同步方法和装置 | |
US20140081927A1 (en) | Data node fencing in a distributed file system | |
CN113987064A (zh) | 数据处理方法、系统及设备 | |
CN102694860A (zh) | 一种云存储的数据处理方法、设备及系统 | |
CN102033912A (zh) | 一种分布式数据库访问方法及系统 | |
CN104506625A (zh) | 一种提升云数据库元数据节点可靠性的方法 | |
CN104252485A (zh) | 一种数据库管理平台 | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN107870982B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN105007172A (zh) | 一种hdfs高可用性方案的实现方法 | |
CN114238495A (zh) | 数据库主备集群切换方法、装置、计算机设备及存储介质 | |
CN109361777A (zh) | 分布式集群节点状态的同步方法、同步系统及相关装置 | |
CN103365740B (zh) | 一种数据冷备方法及装置 | |
CN104516795A (zh) | 一种数据存取方法及系统 | |
CN108762982A (zh) | 一种数据库恢复方法、装置及系统 | |
CN103544081B (zh) | 双元数据服务器的管理方法和装置 | |
CN116389233B (zh) | 容器云管理平台主备切换系统、方法、装置和计算机设备 | |
CN105323271B (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN111178911A (zh) | 一种基于双活技术的客服工单处理方法及系统 | |
CN115562849A (zh) | 一种基于高可用的缓存数据方法及系统 | |
CN112115206A (zh) | 一种处理对象存储元数据的方法和装置 | |
CN104601693A (zh) | 一种分布式系统中响应操作指令的方法和装置 | |
CN114443341A (zh) | 宕机服务器的探测方法、数据库的高可用恢复方法及装置 | |
JP2013171483A (ja) | 差分レプリケーションシステム、マスターデータベース装置、及びスレーブデータベース装置 | |
CN112799835A (zh) | 一种分布式数据库系统元数据的处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151028 |
|
WD01 | Invention patent application deemed withdrawn after publication |