CN106254161A - 基于hdfs的节点失效的快速检测与恢复方法及系统 - Google Patents

基于hdfs的节点失效的快速检测与恢复方法及系统 Download PDF

Info

Publication number
CN106254161A
CN106254161A CN201610859221.3A CN201610859221A CN106254161A CN 106254161 A CN106254161 A CN 106254161A CN 201610859221 A CN201610859221 A CN 201610859221A CN 106254161 A CN106254161 A CN 106254161A
Authority
CN
China
Prior art keywords
node
back end
queue
priority
hdfs
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.)
Granted
Application number
CN201610859221.3A
Other languages
English (en)
Other versions
CN106254161B (zh
Inventor
席刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Eisoo Information Technology Co Ltd
Original Assignee
Shanghai Eisoo Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Eisoo Information Technology Co Ltd filed Critical Shanghai Eisoo Information Technology Co Ltd
Priority to CN201610859221.3A priority Critical patent/CN106254161B/zh
Publication of CN106254161A publication Critical patent/CN106254161A/zh
Application granted granted Critical
Publication of CN106254161B publication Critical patent/CN106254161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于HDFS的节点失效的快速检测与恢复方法及系统,包括设定危险节点时间间隔,若在危险节点时间间隔未检测到数据节点的心跳信息,则判断该数据节点为危险节点,将其加入危险数据节点队列;在危险数据节点队列中,查找各数据节点中的相同数据块;根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。本发明的基于HDFS的节点失效的快速检测与恢复方法及系统在保证各数据节点的数据块可用,基本不增加网络带宽的前提下,提前恢复了危险数据块,降低了系统风险。

Description

基于HDFS的节点失效的快速检测与恢复方法及系统
技术领域
本发明涉及存储集群的技术领域,特别是涉及一种基于HDFS的节点失效的快速检测与恢复方法及系统。
背景技术
随着整个社会的信息化程度不断提高,社会生活逐渐与计算机系统密不可分。目前,计算机系统已全面进入“云计算”、“大数据”时代,由大规模服务器集群响应海量请求和处理海量数据已经成为必然趋势。将相互独立的、分散的计算机通过网络互联,使它们成为一个集群,宏观上以单一系统的模式对其进行管理。对用户而言,集群像是一个独立的服务器。
然而,仅仅具有高性能计算能力的集群系统还远远不能满足这种大规模应用的需要,必须还能够提供持久高效稳定的服务,即提供一定的可用性。所谓计算机系统的可用性,一般定义为计算机系统正常工作时间与计算机系统总运行时间之比。对于某些执行关键使命的计算机系统,要求系统能够长时间稳定运行,即具备365x24小时不停顿运行的能力。对于这类系统,暂时的宕机都会导致数据的丢失继而引发灾难性的后果。
分布式系统特别是集群的容错机制现已成为当今国际学术界研究的热点,吸引了众多的研究人员。众多研究机构和开源组织在系统容错和检查点技术方面做了大量的工作。典型的系统包括Linux-HA(High Available,高可用)的Heartbeat、openssl、Amoeba等。
Linux-HA开源项目提供的Heartbeat软件是基于Linux平台的高可用软件。该项目于1999年开始启动,现已发展到2.0版本,并随大多数Linux版本一起发行,应用广泛。Heartbeat是运行在操作系统之上的用户级软件,可以在多种类Unix平台上运行,具有较好的可移植性,可以在毫秒级发现节点失效。Heartbeat具有易用性、安全性、简单性和低成本等优点,支持串口通讯,即节点间可通过串口传递心跳消息。Heartbeat通过冗余来消除单点故障。当发生节点失效时,自动进行故障恢复并由备份系统接管工作。最初的Heartbeat软件仅支持两个节点,即双机热备份的工作模式。即在主机工作时,备份机通过心跳消息来监控主机的工作状态。一旦发现主机失效,立即接管主机的工作,从而实现主机故障对用户透明。
目前集群的文件系统常用GFS(Google File System,Google文件系统),其衍生的HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)由于易于布置在常用设备上而广受欢迎。在HDFS中保障数据安全所采用的机制主要包括冗余备份、心跳检测以及安全模型等。其中,心跳检测是失效检测中最常采用的技术之一,通过周期性的检查各个节点的工作状态,来便于系统对各个节点进行检测与管理。然而,现有的HDFS检测和恢复机制依然不能满足系统安全的需求。
容灾系统只有拥有快速而准确的失效检测技术,才能在正常时期避免网络信息延迟事件或网络丢包事件带来的干扰,并且在灾难发生后最短的时间内检测到失效,提高系统的效率。因此,如何快速检测和恢复失效节点,提高集群系统的可用性,尽最大可能避免因节点失效而导致的严重后果,成为当前集群系统研究的热点问题之一。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于HDFS的节点失效的快速检测与恢复方法及系统,在HDFS原有检测机制上维护一个危险数据节点队列,并对该危险数据节点队列中各数据节点的数据块进行比对以找出相同数据块,并将相同数据块提前加入待恢复队列,优先进行相同数据块的恢复,从而在保证各数据节点的数据块可用,基本不增加网络带宽的前提下,提前恢复了危险数据块,降低了系统风险。
为实现上述目的及其他相关目的,本发明提供一种基于HDFS的节点失效的快速检测与恢复方法,包括以下步骤:设定危险节点时间间隔,若在危险节点时间间隔未检测到数据节点的心跳信息,则判断该数据节点为危险节点,将其加入危险数据节点队列;所述危险节点时间间隔须小于判断数据节点宕机所需时间;在危险数据节点队列中,查找各数据节点中的相同数据块;根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复方法,其中:若数据节点在加入危险数据节点队列后,被判断处于宕机状态,则将所述数据节点从危险数据节点列表中移除,并加入到待恢复队列依次进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复方法,其中:在待恢复队列中,对于不同优先级的数据块,根据恢复优先级先后对不同的数据块进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复方法,其中:在待恢复队列中,对于相同恢复优先级的不同数据块,按照加入恢复队列的先后依次进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复方法,其中:对于相同数据块,存活副本数越多,优先级越低;存活副本数越少,优先级越高;所述存活副本数等于所有副本数减去宕机副本数和相同数据块的出现次数。
同时,本发明还提供一种基于HDFS的节点失效的快速检测与恢复系统,包括检测判断模块、查找模块和恢复模块;
所述检测判断模块用于设定危险节点时间间隔,并在危险节点时间间隔未检测到数据节点的心跳信息时,判断该数据节点为危险节点,将其加入危险数据节点队列;所述危险节点时间间隔须小于判断数据节点宕机所需时间;
所述查找模块用于在危险数据节点队列中,查找各数据节点中的相同数据块;
所述恢复模块用于根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复系统,其中:所述检测判断模块中,若数据节点在加入危险数据节点队列后,被判断处于宕机状态,则将所述数据节点从危险数据节点列表中移除,并加入到待恢复队列依次进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复系统,其中:在待恢复队列中,对于不同优先级的数据块,根据恢复优先级先后对不同的数据块进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复系统,其中:在待恢复队列中,对于相同恢复优先级的不同数据块,按照加入恢复队列的先后依次进行恢复。
根据上述的基于HDFS的节点失效的快速检测与恢复系统,其中:所述恢复模块中,对于相同数据块,存活副本数越多,优先级越低;存活副本数越少,优先级越高;所述存活副本数等于所有副本数减去宕机副本数和相同数据块的出现次数。
如上所述,本发明的基于HDFS的节点失效的快速检测与恢复方法及系统,具有以下有益效果:
(1)在HDFS原有检测机制上维护一个危险数据节点队列,并对该危险数据节点队列中各数据节点的数据块进行比对以找出相同数据块,并将相同数据块提前加入待恢复队列,优先进行相同数据块的恢复;
(2)保证各数据节点的数据块可用,基本不增加网络带宽;
(3)提前恢复了危险数据块,降低了系统风险。
附图说明
图1显示为现有技术中不同数据节点中相同数据块宕机检测恢复示意图;
图2显示为本发明的基于HDFS的节点失效的快速检测与恢复方法的流程图;
图3显示为本发明中不同数据节点中相同数据块宕机检测恢复示意图;
图4显示为本发明的基于HDFS的节点失效的快速检测与恢复系统的结构示意图。
元件标号说明
1 检测判断模块
2 查找模块
3 恢复模块
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
HDFS中包含两种节点,分别以管理者-工作者的模式运行,即一个名字节点(管理者)和多个数据节点(工作者)。名字节点管理文件系统的命名空间,维护着这个文件系统树及这个树内所有的文件和索引目录,也记录着每个文件的每个块所在的数据节点。数据节点是文件系统的工作者,存储并提供定位块的服务,并且定时的向名字节点发送它们存储的块的列表。
在HDFS中,采用主从形式管理名字节点和数据节点。其中数据节点采用三备份策略,当其中一份对应节点宕机的备份失效后可以从其他节点快速恢复。数据节点定期向名字节点发送心跳信息,名字节点通过心跳判断数据节点状态。名字节点对心跳信息进行定期检查,如果名字节点在2次检查间隔和10次心跳间隔中未收到数据节点的心跳信息,则判定该数据节点宕机。若连续两次判断该数据节点宕机,则从名字节点中移除该数据节点信息,然后调用恢复机制对其进行恢复。其中,两次判断节点是否宕机是考虑到故障处理需要对heartbeats和datanodeMap等同步操作,心跳处理函数就不能对他们更新,容易在系统超负载、机架故障造成大量数据节点故障时误判。
具体地,判断数据节点宕机所需时间的计算公式为:
timeout=2*heartbeat.recheck.interval+10*dfs.heartbeat.interval
其中,heartbeat.recheck.interval表示心跳检查间隔,dfs.heartbeat.interval表示心跳间隔。通常默认heartbeat.recheck.interval为5分钟,默认dfs.heartbeat.interval为3秒。因此,名字节点如果在10分钟+30秒后,仍然没有收到数据节点的心跳,就认为该数据节点已经宕机,并标记为宕机(dead)。
图1所示为现有技术中不同数据节点中相同数据块宕机检测恢复示意图,其显示了数据节点宕机可能造成的数据块危险系数提高的情况。其中,数据节点B和数据节点A有相同的数据块b1。数据节点A和B向名字节点持续发送心跳信息,名字节点检测心跳信息。图中纵向虚线表示检测时间点,上次检测时间是5min时刻,显示数据节点A和B都处于运行正常状态。在检测后某时刻数据节点B失效,则其中数据块b1也失效。在接下来的一次检测也就是10min时刻,检测到数据节点B失效。之后要再做一次确认,也就是在15min时刻(忽略30s的心跳发送时间间隔)再次确认,发现数据节点B的确失效,故在15min时将数据节点B加入待恢复队列,也就是将数据块b1加入待恢复队列。由于待恢复队列中可能还有之前未恢复的数据块,故并不是立刻恢复该数据块。再过一段时间,即在图中t2时刻数据节点B中数据块b1被恢复,其副本数满足系统需求。
如果在数据节点B出现问题后与其有共同数据块b1的数据节点A在t1时刻也发生故障,在10min时刻未检测到其心跳,则在15min时刻要再确认一次。但是,在此次确认中因为先发现了第二次确认的已失效的数据节点B,那么对应的数据节点A的失效就会被忽视,并在之后的20min时刻才会被发现。此时,再将数据节点A加入到待恢复队列,过段时间其中块b1恢复后其副本数满足系统需求。因此,在t1到t2这段时间里对于块b1来说,其数据节点危险系数增大,因为可用副本数为1。而系统发现这种情况并恢复第一个数据块的时刻也在10分30秒之后。由上可知,现有技术中的数据节点的检测恢复机制中,故障处理前需要再次确认故障状态,再进行故障检测和故障恢复。由于在故障检测时间点和故障恢复之间存在较长时间差,忽视这段时间内故障节点的检测,拥有相同数据块的数据节点可能出问题,导致该数据块的备份数降为1或0,存在数据丢失风险。
本发明的基于HDFS的节点失效的快速检测与恢复方法在判断数据节点宕机状态前,加入一种危险(danger)状态判断。若在T时间(T<10min)未检测到数据节点的心跳信息,则认为该数据节点处于危险状态,将该数据节点加入到危险数据节点队列中,并对危险数据节点队列中各数据节点的数据块进行比对以找出相同数据块,该相同数据块即为危险数据块。系统为相同数据块设置恢复优先级,将该相同数据块提前加入到待恢复队列进行恢复,从而将宕机数据节点中的危险数据块提前进行恢复,降低了危险数据块的风险。
参照图2,本发明的基于HDFS的节点失效的快速检测与恢复方法包括以下步骤:
步骤S1、设定危险节点时间间隔,若在危险节点时间间隔未检测到数据节点的心跳信息,则判断该数据节点为危险节点,将其加入危险数据节点队列;其中,危险节点时间间隔须小于判断数据节点宕机所需时间。
其中,判断数据节点宕机所需时间通常为10min+30s。优选地,危险节点时间间隔设置为5min。
具体地,遍历心跳信息表中每条心跳信息。心跳信息表用于记录每次心跳时各个数据节点的心跳信息。因此,遍历心跳信息表,也就是检测对应的每个数据节点,判断其所处的状态。如果在危险节点时间间隔,未检测到数据节点的心跳信息,则判定该数据节点处于危险状态。如果数据节点处于非危险状态却被加入了危险数据节点队列,则需要将其从危险数据节点队列中移除。这是因为部分数据节点可能是短期内由于网络状况与名字节点失去连接,之后又恢复连接。因此,将此类数据节点从危险数据节点列表中移除,能够减少不必要的系统负担。
若数据节点在加入危险数据节点队列后,被判断处于宕机状态,也就是说在10min30s后被判断为处于宕机状态,则将其从危险数据节点列表中移除,并根据现有机制,将该数据节点加入到待恢复队列依次进行恢复。
步骤S2、在危险数据节点队列中,查找各数据节点中的相同数据块。
具体地,在危险数据节点队列中的数据节点中,出现两次及以上的数据块即为所要查找的相同数据块。
步骤S3、根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。
其中,相同数据块出现的次数越多,表明其存活的副本数越少,则恢复优先级越高;相同数据块出现的次数越少,表明其存活的副本数越多,则恢复优先级越低。
设定相同数据块的出现次数为该数据块的危险系数。其中,危险系数越大,表明该数据块的存活副本数越少,危险程度越高。反之,危险系数越小,表明该数据块的存活副本数越多,危险程度越低。危险系数通常取值为0、1和2。
具体地,在数据块block的定义中加入danger标记,danger=0,1,2。通过定义countDangerNodes(Block b)函数判断数据块b在危险节点队列中出现的次数。通过blocksMaps查询存储该数据块副本的其他数据节点信息,因此查询相同的数据块也就转化为查询存储该数据块副本的其他数据节点在危险数据节点队列中出现的次数。在危险数据节点队列中每出现一个存储该数据块副本的数据节点,则该数据块的危险系数danger加1。遍历完危险数据节点队列后,即可返回得到该数据块block对应的危险系数。当引入危险系数danger后,存活副本数为原存活副本数减去危险系数后的值。采用现有机制中恢复数据块时要检测该数据块的存活副本数countNodes,只需将存活副本数修改为原存活副本数减去危险系数后的值。这样不对现有机制做过多修改,现有机制也可以正常运行。其中,原存活副本数等于所有副本数减去处于宕机状态的副本数。
具体地,对于相同数据块,存活副本数越多,优先级越低;存活副本数越少,优先级越高;所述存活副本数等于所有副本数减去宕机副本数和相同数据块的出现次数。即存活副本数等于所有副本数减去宕机副本数和危险系数。
在待恢复队列中,根据恢复优先级先后对不同的数据块进行恢复;对于相同恢复优先级的不同数据块,则按照加入恢复队列的先后依次进行恢复。
图3所示为本发明中不同数据节点中相同数据块宕机检测恢复示意图。由图可知,数据节点A、B有着相同的数据块b1。在第二次确认数据节点失效之前,也就是t1时刻检测该数据节点是否属于危险节点。其中,判断该数据节点上次检测时间与此次检测的时间间隔是否超过设置的危险节点时间间隔,如果是,则将该数据节点加入危险数据节点队列。若设置的危险检测点是t1时刻,即t1时刻与10min时刻间的时间间隔等于危险节点时间间隔,那么数据节点A和B将在此刻加入到危险数据节点队列中;同时,遍历危险数据节点队列中的数据块,将相同的数据块根据出现次数设置恢复优先级,并根据恢复优先级优先进行恢复。也就是说,此处的数据块b1被加入待恢复队列,其加入队列的时刻是t1时刻,过一段时间后被恢复,这时b1副本数符合系统要求。
下面结合具体实施例来进一步说明本发明的基于HDFS的节点失效的快速检测与恢复方法。
1、修改代码重新编译
对HDFS对应代码进行修改,并将做过修改的代码文件重新编译,导出相应的jar文件,替换原有文件。在数据节点和名字节点上用的的源码都是修改编译后的源码。
2、环境部署:
以四台计算机为例搭建,其中包括
一个master节点(名字节点),为master 192.168.0.136
三个slave节点(数据节点),分别为slave 192.168.0.137、slave 192.168.0.138和slave192.168.0.139。
首先,修改master节点上的配置文件,需要修改的文件有:
/etc/hostname,/etc/hosts,/home/hadoop/hadoop/conf/masters,/home/hadoop/hadoop/conf/slaves,/home/hadoop/hadoop/conf/core-site.xml,/home/hadoop/hadoop/conf/hdfs-site.xml,/home/hadoop/hadoop/conf/mapred-site.xml
接着,修改每台计算机的/etc/hostname,以便于进行网络配置。以192.168.0.136为例,修改/etc/hostname,将原来的localhost改成n136。其他机器也如此。
然后,修改master(即n136)上的/etc/hosts,将里面所有的内容都注释掉,添加以下信息:
该步骤是将每个节点的ip和计算机名联系起来,因为在hadoop中,防止出现找不到计算机名而报错的情况。
接着,修改master上的/home/hadoop/hadoop/conf/masters文件,把里面原来的localhost修改成n136,将计算机名与hadoop配置文件中的节点角色联系起来。
再修改master上的/home/hadoop/hadoop/conf/slaves文件,把里面的localhost清除,添加以下信息:d137 d138 d139
接着,修改master节点上的/home/hadoop/hadoop/conf/core-site.xml文件,只需修改fs.default.name项为:
这里指明文件系统的入口是master(即n136)的9000号端口。
接着,修改master上的/home/hadoop/hadoop/conf/hdfs-site.xml文件,把dfs.replication改成默认的3(采用默认值3)。
最后,修改master上的/home/hadoop/hadoop/conf/mapred-site.xml文件,修改mapred.job.tracker:
这里将MapReduce中的jobtracker放在了master上,其实也可以放在其他节点上,这根据具体情况而定,与对HDFS修改做测试无关。
3、测试
在master为1、slaver为3的集群中,通过客户端向集群数据节点写入文件,使其中两个数据节点宕机,等待系统信息输出。在检测到数据节点失效及进行数据节点恢复时系统会输出相应时间信息,过段时间后查看加入待恢复队列时系统打印出的数据节点开始恢复的时间信息。根据返回时间信息调整危险节点时间间隔(heartbeatDangerInterval)参数,使其系统在固定数据量范围内达到性能最优。
参照图4,本发明的基于HDFS的节点失效的快速检测与恢复系统包括检测判断模块1、查找模块2和恢复模块3。
检测判断模块1用于设定危险节点时间间隔,并在危险节点时间间隔未检测到数据节点的心跳信息时,判断该数据节点为危险节点,将其加入危险数据节点队列;其中,危险节点时间间隔须小于判断数据节点宕机所需时间。
其中,判断数据节点宕机所需时间通常为10min+30s。优选地,危险节点时间间隔设置为5min。
具体地,遍历心跳信息表中每条心跳信息。心跳信息表用于记录每次心跳时各个数据节点的心跳信息。因此,遍历心跳信息表,也就是检测对应的每个数据节点,判断其所处的状态。如果在危险节点时间间隔,未检测到数据节点的心跳信息,则判定该数据节点处于危险状态。如果数据节点处于非危险状态却被加入了危险数据节点队列,则需要将其从危险数据节点队列中移除。这是因为部分数据节点可能是短期内由于网络状况与名字节点失去连接,之后又恢复连接。因此,将此类数据节点从危险数据节点列表中移除,能够减少不必要的系统负担。
若数据节点在加入危险数据节点队列后,被判断处于宕机状态,也就是说在10min30s后被判断为处于宕机状态,则将其从危险数据节点列表中移除,并根据现有机制,将该数据节点加入到待恢复队列依次进行恢复。
查找模块2与检测判断模块1相连,用于在危险数据节点队列中,查找各数据节点中的相同数据块。
具体地,在危险数据节点队列中的数据节点中,出现两次及以上的数据块即为所要查找的相同数据块。
恢复模块3与查找模块2相连,用于根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。
其中,相同数据块出现的次数越多,表明其存活的副本数越少,则恢复优先级越高;相同数据块出现的次数越少,表明其存活的副本数越多,则恢复优先级越低。
设定相同数据块的出现次数为该数据块的危险系数。其中,危险系数越大,表明该数据块的存活副本数越少,危险程度越高。反之,危险系数越小,表明该数据块的存活副本数越多,危险程度越低。危险系数通常取值为0、1和2。
具体地,在数据块block的定义中加入danger标记,danger=0,1,2。通过定义countDangerNodes(Block b)函数判断数据块b在危险节点队列中出现的次数。通过blocksMaps查询存储该数据块副本的其他数据节点信息,因此查询相同的数据块也就转化为查询存储该数据块副本的其他数据节点在危险数据节点队列中出现的次数。在危险数据节点队列中每出现一个存储该数据块副本的数据节点,则该数据块的危险系数danger加1。遍历完危险数据节点队列后,即可返回得到该数据块block对应的危险系数。当引入危险系数danger后,存活副本数为原存活副本数减去危险系数后的值。采用现有机制中恢复数据块时要检测该数据块的存活副本数countNodes,只需将存活副本数修改为原存活副本数减去危险系数后的值。这样不对现有机制做过多修改,现有机制也可以正常运行。其中,原存活副本数等于所有副本数减去处于宕机状态的副本数。
具体地,对于相同数据块,存活副本数越多,优先级越低;存活副本数越少,优先级越高;所述存活副本数等于所有副本数减去宕机副本数和相同数据块的出现次数。即存活副本数等于所有副本数减去宕机副本数和危险系数。
在待恢复队列中,根据恢复优先级先后对不同的数据块进行恢复;对于相同恢复优先级的不同数据块,则按照加入恢复队列的先后依次进行恢复。
综上所述,本发明的基于HDFS的节点失效的快速检测与恢复方法及系统在HDFS原有检测机制上维护一个危险数据节点队列,并对该危险数据节点队列中各数据节点的数据块进行比对以找出相同数据块,并将相同数据块提前加入待恢复队列,优先进行相同数据块的恢复;保证各数据节点的数据块可用,基本不增加网络带宽;提前恢复了危险数据块,降低了系统风险。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种基于HDFS的节点失效的快速检测与恢复方法,其特征在于:包括以下步骤:
设定危险节点时间间隔,若在危险节点时间间隔未检测到数据节点的心跳信息,则判断该数据节点为危险节点,将其加入危险数据节点队列;所述危险节点时间间隔须小于判断数据节点宕机所需时间;
在危险数据节点队列中,查找各数据节点中的相同数据块;
根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。
2.根据权利要求1所述的基于HDFS的节点失效的快速检测与恢复方法,其特征在于:若数据节点在加入危险数据节点队列后,被判断处于宕机状态,则将所述数据节点从危险数据节点列表中移除,并加入到待恢复队列依次进行恢复。
3.根据权利要求1所述的基于HDFS的节点失效的快速检测与恢复方法,其特征在于:在待恢复队列中,对于不同优先级的数据块,根据恢复优先级先后对不同的数据块进行恢复。
4.根据权利要求1所述的基于HDFS的节点失效的快速检测与恢复方法,其特征在于:在待恢复队列中,对于相同恢复优先级的不同数据块,按照加入恢复队列的先后依次进行恢复。
5.根据权利要求1所述的基于HDFS的节点失效的快速检测与恢复方法,其特征在于:对于相同数据块,存活副本数越多,优先级越低;存活副本数越少,优先级越高;所述存活副本数等于所有副本数减去宕机副本数和相同数据块的出现次数。
6.一种基于HDFS的节点失效的快速检测与恢复系统,其特征在于:包括检测判断模块、查找模块和恢复模块;
所述检测判断模块用于设定危险节点时间间隔,并在危险节点时间间隔未检测到数据节点的心跳信息时,判断该数据节点为危险节点,将其加入危险数据节点队列;所述危险节点时间间隔须小于判断数据节点宕机所需时间;
所述查找模块用于在危险数据节点队列中,查找各数据节点中的相同数据块;
所述恢复模块用于根据相同数据块的出现次数设置恢复优先级,并根据恢复优先级将相同数据块加入待恢复队列,优先进行恢复。
7.根据权利要求6所述的基于HDFS的节点失效的快速检测与恢复系统,其特征在于:所述检测判断模块中,若数据节点在加入危险数据节点队列后,被判断处于宕机状态,则将所述数据节点从危险数据节点列表中移除,并加入到待恢复队列依次进行恢复。
8.根据权利要求6所述的基于HDFS的节点失效的快速检测与恢复系统,其特征在于:在待恢复队列中,对于不同优先级的数据块,根据恢复优先级先后对不同的数据块进行恢复。
9.根据权利要求6所述的基于HDFS的节点失效的快速检测与恢复系统,其特征在于:在待恢复队列中,对于相同恢复优先级的不同数据块,按照加入恢复队列的先后依次进行恢复。
10.根据权利要求6所述的基于HDFS的节点失效的快速检测与恢复系统,其特征在于:所述恢复模块中,对于相同数据块,存活副本数越多,优先级越低;存活副本数越少,优先级越高;所述存活副本数等于所有副本数减去宕机副本数和相同数据块的出现次数。
CN201610859221.3A 2016-09-28 2016-09-28 基于hdfs的节点失效的快速检测与恢复方法及系统 Active CN106254161B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610859221.3A CN106254161B (zh) 2016-09-28 2016-09-28 基于hdfs的节点失效的快速检测与恢复方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610859221.3A CN106254161B (zh) 2016-09-28 2016-09-28 基于hdfs的节点失效的快速检测与恢复方法及系统

Publications (2)

Publication Number Publication Date
CN106254161A true CN106254161A (zh) 2016-12-21
CN106254161B CN106254161B (zh) 2020-01-03

Family

ID=57611004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610859221.3A Active CN106254161B (zh) 2016-09-28 2016-09-28 基于hdfs的节点失效的快速检测与恢复方法及系统

Country Status (1)

Country Link
CN (1) CN106254161B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107404524A (zh) * 2017-07-24 2017-11-28 郑州云海信息技术有限公司 一种分布式集群节点访问的方法及装置
CN107402851A (zh) * 2017-08-01 2017-11-28 郑州云海信息技术有限公司 一种数据恢复控制方法及装置
CN107423155A (zh) * 2017-07-27 2017-12-01 杭州绿湾网络科技有限公司 数据节点故障探测方法及装置
CN111796973A (zh) * 2020-06-30 2020-10-20 南京航空航天大学 一种面向数据中心存储故障的数据恢复调优方法
CN112559445A (zh) * 2020-12-11 2021-03-26 上海哔哩哔哩科技有限公司 数据写入方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140215257A1 (en) * 2013-01-30 2014-07-31 Ebay Inc Daisy chain distribution in data centers
CN104935481A (zh) * 2015-06-24 2015-09-23 华中科技大学 一种分布式存储下基于冗余机制的数据恢复方法
CN105635252A (zh) * 2015-12-23 2016-06-01 浪潮集团有限公司 一种Hadoop分布式文件系统HDFS纠删码冗余备份策略

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140215257A1 (en) * 2013-01-30 2014-07-31 Ebay Inc Daisy chain distribution in data centers
CN104935481A (zh) * 2015-06-24 2015-09-23 华中科技大学 一种分布式存储下基于冗余机制的数据恢复方法
CN105635252A (zh) * 2015-12-23 2016-06-01 浪潮集团有限公司 一种Hadoop分布式文件系统HDFS纠删码冗余备份策略

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107404524A (zh) * 2017-07-24 2017-11-28 郑州云海信息技术有限公司 一种分布式集群节点访问的方法及装置
CN107423155A (zh) * 2017-07-27 2017-12-01 杭州绿湾网络科技有限公司 数据节点故障探测方法及装置
CN107402851A (zh) * 2017-08-01 2017-11-28 郑州云海信息技术有限公司 一种数据恢复控制方法及装置
CN107402851B (zh) * 2017-08-01 2020-10-16 苏州浪潮智能科技有限公司 一种数据恢复控制方法及装置
CN111796973A (zh) * 2020-06-30 2020-10-20 南京航空航天大学 一种面向数据中心存储故障的数据恢复调优方法
CN112559445A (zh) * 2020-12-11 2021-03-26 上海哔哩哔哩科技有限公司 数据写入方法及装置
CN112559445B (zh) * 2020-12-11 2022-12-27 上海哔哩哔哩科技有限公司 数据写入方法及装置

Also Published As

Publication number Publication date
CN106254161B (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
CN106341454B (zh) 跨机房多活分布式数据库管理系统和方法
CN106254161A (zh) 基于hdfs的节点失效的快速检测与恢复方法及系统
US9201742B2 (en) Method and system of self-managing nodes of a distributed database cluster with a consensus algorithm
CN106062717B (zh) 一种分布式存储复制系统和方法
US9842033B2 (en) Storage cluster failure detection
US9984140B1 (en) Lease based leader election system
CA2853465C (en) Split brain resistant failover in high availability clusters
US8498967B1 (en) Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
CN103294701B (zh) 一种分布式文件系统以及数据处理的方法
Zheng et al. PaxosStore: high-availability storage made practical in WeChat
CN103763155A (zh) 分布式云存储系统多服务心跳监测方法
WO2012145963A1 (zh) 数据管理系统及方法
WO2014101424A1 (zh) 分布式数据库同步方法和系统
US20060123098A1 (en) Multi-system auto-failure web-based system with dynamic session recovery
WO2007028248A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster
CN104536971A (zh) 一种具备高可用性的数据库
Moiz et al. Database replication: A survey of open source and commercial tools
US11003550B2 (en) Methods and systems of operating a database management system DBMS in a strong consistency mode
CN113127499B (zh) 一种基于区块链的微服务方法、设备及介质
CN108762992B (zh) 主备切换方法、装置、计算机设备和存储介质
Zhu et al. IT disaster tolerance and application classification for data centers
WO2015196692A1 (zh) 一种云计算系统以及云计算系统的处理方法和装置
CN108600156A (zh) 一种服务器及安全认证方法
CN116974816A (zh) 一种异地双节点服务的灾备系统
CN114706714A (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
GR01 Patent grant
GR01 Patent grant