处理数据块的方法、发起恢复操作的方法和节点的制作方法

文档序号:6363298阅读:211来源:国知局
专利名称:处理数据块的方法、发起恢复操作的方法和节点的制作方法
技术领域
本发明涉及计算机技术领域,更具体地,本发明涉及一种用于处理一数据块的方法和数据节点、以及一种用于发起一数据块的恢复操作的方法和管理节点。
背景技术
Hadoop分布式文件系统(HDFS)是被设计成适合运行在通用硬件上的分布式文件系统。HDFS采用主从架构。一个HDFS集群由一个名字节点(Namenode)和一定数目的数据节点(Datanode)组成。名字节点是一个中心服务器,负责管理文件系统的名字空间以及客户端对文件的访问。集群中的数据节点负责管理它所在节点上的存储。原生的HDFS集群为了保证数据的安全性,引入了复制冗余的概念,即按照预定的副本数目N(又称为复制系数,其中N e η)来将每个数据块(block)写入到几个不同的数据节点之中。这种写入数据的操作采用链式的同步冗余传送方式。具体来说,客户端会从名字节点获取一个用于存放数据块副本的数据节点的列表。这里,以数据块的副本数目N等于3为例进行说明。首先,客户端开始向列表中第一数据节点(Datanodel)传送数据块;第一数据节点接收该数据块,将该数据块写入到自己的本地磁盘中,并同时传送该数据块到列表中第二数据节点(Datanode2);第二数据节点也是这样,接收并将该数据块写入到它的本地磁盘中,并同时传给第三数据节点(Datanode3);第三数据节点接收数据块并写入到本地磁盘中,并且向第二数据节点传送用于指示自己的写入是否成功的第三确认信息;第二数据节点收到该第三确认信息后,将用于指示自己的写入是否成功的第二确认信息、连同该第三确认信息一起传送到第一数据节点;最后,第一数据节点将自己的第一确认信息以及所接收到的第二和第三确认信息一起传送到该客户端,使得客户端能够得知这个数据块复制过程的最终结果。

假设以T〈K-1,K>(0 < K < = N,K e η)来表示一个数据块从第K_1数据节点传送到第K数据节点所花费的时间,则这个数据块的整个写入过程所花费的时间T理论上是:τ=Max (Τ〈0,1>,T〈l,2>,...,T〈N_1,N 。在进行数据块的本地数据冗余的情况下,这时所有的数据节点都位于一本地网络中,由于本地网络的传送速度很快,所以每个T〈K-1,K〉都很小并且相差无几,因此,整个传送时间T很短。然而,在做因特网数据中心(IDC)级别的数据实时冗余方案的情况下,这时有些数据节点位于远离本地网络的一个或多个异地网络中,这种同步冗余传送方式将具有严重的局限。例如,假设第K数据节点与第K-1数据节点处于异地,则由于异地IDC的带宽限制,导致从第K-1数据节点传送到第K数据节点所花费的时间T〈K-1,K〉远远大于其他所有数据节点之间的传送时间段,从而使得整个传送时间T取决于T〈K-1,K>。这将导致整个传送时间T变长,降低了 HDFS集群的写入速度(wps)。因此,需要一种用于处理一数据块的方法和数据节点,其能够在做IDC级别的数据实时冗余方案或异地冗余方案的情况下,减少数据块在彼此之间处于异地或传输带宽受限的N个数据节点中进行复制冗余时的传送时间。

发明内容
为了解决上述技术问题,根据本发明的一个方面,提供了一种用于处理一数据块的方法,所述方法应用于一数据节点,所述数据节点属于一分布式文件系统,所述分布式文件系统包括管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述方法包括:接收所述数据块;将所述数据块存储到存储单元中;生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中,并且返回所述确认信息;以及向随后的数据节点传送所述数据块。根据本发明的另一方面,提供了一种用于处理一数据块的数据节点,所述数据节点属于一分布式文件系统,所述分布式文件系统包括管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述数据节点包括:接收单元,用于接收所述数据块;存储单元,用于将所述数据块存储到其中;确认单元,用于生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中;以及传送单元,用于返回所述确认信息,并且向随后的数据节点传送所述数据块。根据本发明的另一方面,提供了一种用于发起一数据块的恢复操作的方法,所述方法应用于一管理节点,所述管理节点属于一分布式文件系统,所述分布式文件系统包括所述管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述方法包括:设置一计数器,所述计数器的初始值等于所述数据块的副本数目N ;从所述N个数据节点中的每个数据节点接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中;根据所述确认信息来对所述计数器的值进行递减;以及在一预定的时间段之后,判断所述计数器的当前值I是否等于零;如果所述计数器的当前值I大于零,则发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。根据本发明的又一方面,提供了一种用于发起一数据块的恢复操作的管理节点,所述管理节点属于一分布式文件系统,所述分布式文件系统包括所述管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述管理节点包括:确认信息接收单元,用于从所述N个数据节点中的每个数据节点接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中;计数器单元,用于设置一计数器,所述计数器的初始值等于所述数据块的副本数目N,并且根据所述确认信息来对所述计数器的值进行递减;以及操作发起单元,用于在一预定的时间段之后,判断所述计数器的当前值I是否等于零,如果所述计数器的当前值I大于零,则发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。与现有技术相比,采用根据本发明的用于处理一数据块的方法和数据节点,可以在做IDC级别的数据实时冗余方案或异地冗余方案的情况下,减少数据块在彼此之间处于异地的N个数据节点中进行复制冗余时的传送时间;同样地,也可以在作本地冗余方案的情况下,减少数据块在彼此之间虽然处于本地、但是传输带宽受限的N个数据节点中进行复制冗余时的传送时间。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:图1图示了根据本发明的分布式文件系统的框图。图2图示了根据本发明的用于处理一数据块的方法。图3图示了根据本发明的用于处理一数据块的数据节点。图4图示了根据本发明实施例的分布式文件系统的框图。图5图示了根据本发明第一实施例的用于处理一数据块的方法。图6图示了根据本发明第一实施例的用于处理一数据块的数据节点300。图7图示了根据本发明的用于发起一数据块的恢复操作的方法。图8图示了根据本发明的用于发起一数据块的恢复操作的管理节点。图9图示了根据本发明实施例的用于发起一数据块的恢复操作的方法。图10图示了根据本发明实施例的用于发起一数据块的恢复操作的名字节点。
具体实施例方式将参照附图详细描述根据本发明的各个实施例。这里,需要注意的是,在附图中,将相同的附图标记赋予基本上具有相同或类似结构和功能的组成部分,并且将省略关于它们的重复描述。在下文中,将参考图1-3来描述根据本发明的分布式文件系统、以及用于处理一数据块的方法和数据节点。图1图示了根据本发明的分布式文件系统的框图。根据本发明的分布式文件系统包括管理节点10和N个数据节点,即第一数据节点
31、第二数据节点32........和第N数据节点3N。所述管理节点10用于管理由客户端20
提供的数据块在所述N个数据节点31-3N上的存储,N是所述数据块的副本数目。图2图示了根据本发明的用于处理一数据块的方法。根据本发明的用于处理一数据块的方法应用于一数据节点,所述数据节点属于根据本发明的分布式文件系统。具体地,所述方法包括:在步骤S210中,接收所述数据块;在步骤S220中,将所述数据块存储到存储单元中;在步骤S230中,生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中,并且返回所述确认信息;以及在步骤S240中,向随后的数据节点传送所述数据块。
图3图示了根据本发明的用于处理一数据块的数据节点300。根据本发明的用于处理一数据块的数据节点300属于根据本发明的分布式文件系统。例如,所述数据节点300可以是在图1所图示的分布式文件系统中包括的N个数据节点31-3N中的任何一个。具体地,所述数据节点300包括:接收单元310,用于接收所述数据块;存储单元320,用于将所述数据块存储到其中;确认单元330,用于生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中;以及传送单元340,用于返回所述确认信息,并且向随后的数据节点传送所述数据块。由此可见,采用根据本发明的用于处理一数据块的方法和数据节点,可以使得数据的冗余备份与数据的传输异步化。即,每个数据节点不是如现有技术中一样,在接收数据块的同时,往随后的数据节点写入数据块,并然后,在接收到该随后的数据节点返回的确认信息之后,返回自己的确认信息。而是相反地,每个数据节点在接收到数据块并且将该数据块存储到存储单元中之后,立即返回自己的确认信息,不再与该数据块的接收操作同时地向随后的数据节点进行同步传送,而是,每个数据节点与该接收操作异步地进行向随后的数据节点传送所述数据块的操作,以便将该数据块备份到传输链路中的下一个数据节点。这样,即使在做因特网数据中心(IDC)级别的数据实时冗余方案、或跨网的数据同步方案的情况下,由于第一数据节点不必再等待随后的数据节点的确认信息就可以向客户端返回自己确认信息,所以使得数据块的整个写入过程所花费的时间T仅仅取决于该数据块从客户端传送到第一数据节点所花费的时间,即τ〈0,1>。由于客户端与第一数据节点往往处于局域网中,这意味着本发明可以以接近局域网的速度来实现IDC级别的数据冗余。因此,在本发明中,可以在做IDC级别的数据实时冗余方案或异地冗余方案的情况下,减少数据块在彼此之间处于异地的N个数据节点中进行复制冗余时的传送时间;同样地,也可以在作本地冗余方案的情况下,减少数据块在彼此之间虽然处于本地、但是传输带宽受限的N个数据节点中进行复制冗余时的传送时间;此外,也没有对于分布式文件系统带来任何功能和性能方面的影响。在下文中,将参考图4-6来描述根据本发明实施例的分布式文件系统、以及根据本发明第一实施例的用于处理一数据块的方法和数据节点。下面,以Hadoop分布式文件系统(HDFS)为例来说明根据本发明实施例的分布式文件系统。HDFS采用主从(master/slave)架构,并且一个HDFS集群是由一个名字节点(Namenode)和一定数目的数据节点(Datanode)组成。HDFS暴露了文件系统的名字空间,使得用户能够以文件的形式来在上面存储数据。为了能够在一个大集群中跨机器可靠地存储超大文件,HDFS将每个文件存储成一系列的数据块。而且,为了容错,HDFS为文件的所有数据块建立副本,并将各个副本存放在不同的数据节点上,以提高文件的可靠性和可用性。在HDFS集群中,名字节点用于保存文件的副本数目(又称为文件的复制系数),管理文件系统的名字空间(namespace)以及客户端对文件的访问,执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,并且负责确定数据块到具体数据节点的映射。
集群中的数据节点一般是一个物理节点一个,负责处理文件系统客户端的读写请求,并且在名字节点的统一调度下进行数据块的创建、删除和复制。图4图示了根据本发明实施例的分布式文件系统的框图。如4所图示的,根据本发明实施例的HDFS采用主从(master/slave)架构,并且由一个名字节点11 (即,图1中的管理节点10)和3个数据节点31-33组成,其中假设了将数据块存储到3个不同的数据节点之中,即数据块的副本数目为3。在通常情况下,第一数据节点31与客户端20处于本地,第二数据节点32可以与第一数据节点31处于本地或异地,第三数据节点33与第二数据节点可以处于异地。但是在实践中,本发明并不限于此,客户端20与第一到第三节点31-33可以任意地处于本地或异地。图5图示了根据本发明第一实施例的用于处理一数据块的方法,而图6图示了根据本发明第一实施例的用于处理一数据块的数据节点300。图5所图示的根据本发明第一实施例的用于处理一数据块的方法可以应用于图6所图示的数据节点300,以便将客户端20提供的数据块在包括数据节点300的3个数据节点上进行存储,以提高文件的可靠性。与图3所图示的根据本发明的用于处理一数据块的数据节点300相似地,如图6所图示的,根据本发明第一实施例的数据节点300包括:接收单元310、存储单元320、确认单元330、以及传送单元340。此外,该数据节点300还包括:更新单元350、判断选择单元360、队列单元370、和线程池单元380。下面,以所述数据节点300是第一数据节点31为例来进行说明。然而,对于本领域技术人员明显的是,所述数据节点300可以是在图4所图示的分布式文件系统中包括的3个数据节点31-33中的任何一个。如图5所图示的,根据本发明第一实施例的用于处理一数据块的方法包括:在步骤S500中,接收所述数据块。在HDFS架构中,当客户端20想要创建一个文件时,客户端20创建文件的请求并不是立即发送给名字节点11。事实上,在开始阶段中,HDFS客户端20会先将文件数据缓存到本地的一个临时文件中。应用程序的写操作被透明地重定向到这个临时文件。只有当这个临时文件累积的数据量超过一个数据块的大小时,客户端20才会联系名字节点11。名字节点11在接收到客户端20的请求之后,将文件名插入文件系统的层次结构中,并且分配一个数据块。然后,名字节点11根据预先配置的数据块的副本数目N(在这里,N= 3),将目标数据块返回给客户端20。接着,客户端20将这个数据块从本地临时文件上传到数据节点上。例如,首先,第一数据节点31的接收单元310从客户端20接收所述数据块。在步骤S510中,接收一列表。然后,第一数据节点31的接收单元310还从客户端20接收一列表,所述列表是由所述名字节点11向所述客户端20分配的,并且包括用于存储所述数据块副本的3个数据节点及其顺序。例如,该列表包括第一数据节点31、第二数据节点32、和第三数据节点33的标识符以及它们用于存储该数据块的先后顺序(例如,第一数据节点31处于第二数据节点32之前,并且第二数据节点32处于第三数据节点33之前)。在步骤S520中,将所述数据块存储到存储单元中。
在第一数据节点31中,在接收单元310接收到该数据块和该列表之后,存储单元320将所述数据块存储到其自身中。其中,该存储单元320例如是第一数据节点31的本地磁盘。在此情况下,第一数据节点31将从客户端20接收到的数据块写入到本地磁盘中。在步骤S530中,生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中,并且返回所述确认信息。在存储单元320将所述数据块存储到其自身中之后,确认单元330根据所述存储单元320是否成功地将所述数据块存储到其自身来生成一确认信息。例如,当在存储单元320中成功地写入所述数据块时,确认单元330生成一成功确认信息ACK (O),以指示出将所述数据块成功地写入到第一数据节点31中。当在存储单元320中由于磁盘错误等原因而产生写入错误时,确认单元330生成一失败确认信息ACK(I),以指示出未能将所述数据块成功地写入到第一数据节点31中。确认单元330将所生成确认信息传送到传送单元340。然后,传送单元340将该确认信息返回到从其接收到数据块的客户端20。在这里,需要说明的是,如果当前的数据节点是第二数据节点32或第三数据节点33时,则第二数据节点32或第三数据节点33中的传送单元将对应数据节点中的确认单元所生成的确认信息分别返回到从其接收到数据块的第一数据节点31或第二数据节点32。需要注意的是,如上所述,根据本发明第一实施例的用于处理一数据块的方法对原生HDFS中的确认机制进行了修改。在原生HDFS中,以副本数目N等于3为例,首先,客户端20在向列表中第一数据节点31传送数据块之后,第一数据节点31接收该数据块,将该数据块写入到自己的本地磁盘中,并同时传送该数据块到列表中第二数据节点32 ;第二数据节点32接收并将该数据块写入到它的本地磁盘中,并同时传给第三数据节点33 ;第三数据节点33接收数据块并写入到本地磁盘中,并且向第二数据节点32传送用于指示自己的写入是否成功的第三确认信息;第二数据节点32收到该第三确认信息后,将用于指示自己的写入是否成功的第二确认信息、连同该第三确认信息一起传送到第一数据节点31 ;最后,第一数据节点31将自己的第一确认信息以及所接收到的第二和第三确认信息一起传送到该客户端20,使得客户端20能够得知这个数据块复制过程的最终结果,以便进行后续操作。也就是说,客户端20收到的确认报文是第一到第三数据节点31-33的确认信息的叠加。然而,在本发明中,客户端20在接收到来自第一数据节点31的成功确认信息ACK(O)时,认为该数据块已经成功地存储到第一数据节点31中,使得客户端不再由于数据块的副本数目不足而触发数据块的恢复操作,而是继续进行后续数据块的冗余备份操作;而客户端20在接收到来自第一数据节点31的失败确认信息ACK(I)时,认为该数据块未能成功地存储到第一数据节点31中,并继而进行该数据块的恢复操作。在步骤S540中,在当前的数据节点向所述管理节点传送的第一信息中,向所述管理节点传送所述确认信息。在HDFS架构中,数据节点31-33中的每一个数据节点周期性地(例如,每隔几秒钟)向名字节点11发送心跳(heartbeat)信息。网络割裂可能导致一部分数据节点跟名字节点11失去联系。名字节点11通过心跳信号的缺失来检测这一情况,并将这些近期不再发送心跳信号数据节点标记为宕机,不会再将新的IO请求发给它们。任何存储在宕机数据节点上的数据将不再有效。数据节点的宕机可能会引起一些数据块的实际副本数目低于指定值N(N = 3),名字节点11不断地检测这些需要复制的数据块,一旦发现就启动恢复操作。因此,所述传送单元340还在数据节点31向名字节点11传送的心跳信息中,向名字节点11传送所述确认信息,以便名字节点11能够掌握在数据节点31中是否成功地将所述数据块存储到存储单元320中。在步骤S550中,通过将当前的数据节点从所述列表中删除,来更新所述列表。在第一数据节点31中,更新单元350通过将当前的数据节点31从所述列表中删除,来更新所述列表。即,更新后的列表包括第二数据节点32和第三数据节点33的标识符以及它们用于存储该数据块的先后顺序。在步骤S560中,判断在所述更新后的列表中是否还存在数据节点。判断选择单元360在所述传送单元340向随后的数据节点传送所述数据块之前,判断在所述更新单元350更新后的列表中是否还存在数据节点。如果还存在随后的数据节点,则执行步骤S570 ;如果不存在任何数据节点,则此方法继续进行下一个数据块的冗余备份操作。在步骤S570中,将所述数据块放置到一队列中。如果判断选择单元360判断出还存在随后的数据节点,则第一数据节点31在将所述数据块存储到所述存储单元320中之后,将所述数据块放置到队列单元370中。换言之,第一数据节点31在执行完本地磁盘写入操作之后,将数据块放入到一队列(Queue)(例如,内存)中,然后即可返回,而不必与现有技术中一样,再继续等待将该数据块同步传送到随后的数据节点。在步骤S580中,选择在顺序上处于最前面的数据节点,作为所述随后的数据节点。当判断出还存在随后的数据节点时,判断选择单元360在所述更新单元350更新后的列表中选择在顺序上处于最前面的数据节点(即,第二数据节点32),作为所述随后的数据节点。在步骤S590中,从所述队列中获取所述数据块。线程池单元380在所述传送单元340向随后的数据节点32传送所述数据块之前,从所述队列单元370中获取(get)所述数据块。例如,第一数据节点31在将数据块放入(put)到一队列中之后,该队列触发一线程池(ThreadPool)从作为内存的队列中获取该数据块,以产生执行数据块传输的任务,从而将该数据块备份到传输链路中的下一个数据节点。在步骤S600中,向随后的数据节点传送所述数据块。在从线程池单元380接收到该数据块之后,传送单元340向随后的数据节点32传送所述数据块,以便将该数据块写入到下一个数据节点。由此可见,采用根据本发明第一实施例的用于处理一数据块的方法和数据节点,可以在数据节点内部使得队列与线程池异步化。即,每个数据节点不是在接收数据块的同时,往随后的数据节点写入数据块,并然后,在接收到该随后的数据节点返回的确认信息之后,返回自己的确认信息。而是相反地,每个数据节点在执行完本地磁盘写入操作之后,将数据块放入到内存中,然后即可返回,不用再等待该数据块的同步传送。其后,线程池从内存中取出该数据块,以写入到下一个数据节点。因此,在本发明的第一实施例中,将数据同步的时间从现有技术中的T =Max (Τ〈0,1>,T〈l,2>,...,T〈N_1,N 减少至Ij T〈0,1>,从而提高了数据块在N个数据节点中进行复制冗余的效率,并且没有对于HDFS造成任何功能和性能方面的影响。需要说明的是,根据本发明第一实施例的用于处理一数据块的方法中各步骤的执行顺序不限于上述的顺序,例如,显然地,步骤S510也可以在步骤S500之前或与其同时执行,步骤S540也可以在步骤S600之后执行,步骤S580也可以在步骤S560之后执行等等。在下文中,将进一步描述根据本发明第二实施例的用于处理一数据块的方法和数据节点。 与图6所图示的根据本发明第一实施例的数据节点300不同之处在于,根据本发明第二实施例的用于处理一数据块的数据节点除了包括:接收单元310、存储单元320、确认单元330、以及传送单元340、更新单元350、判断选择单元360、队列单元370、和线程池单元380之外,该数据节点还包括:分配单元(未示出)。对应地,与图5所图示的根据本发明第一实施例的方法中的步骤S570和S590不同地,根据本发明第二实施例的用于处理一数据块的方法包括:向所述数据块分配一索引;将所述数据块的索引放置到一队列中;从所述队列中获取所述数据块的索引;以及根据所述数据块的索引,来从所述存储单元中读取所述数据块。具体地,该分配单元在所述存储单元320将所述数据块存储到其中之前,向所述数据块分配一索引。然后,队列单元370在第一数据节点31将所述数据块存储到所述存储单元320中之后,将所述数据块的索引放置到队列中(例如,内存中)。例如,如果判断选择单元360判断出还存在随后的数据节点,则第一数据节点31在将所述数据块存储到所述存储单元320中之后,将所述数据块的索引放置到队列单元370中。线程池单元380在所述传送单元340向随后的第二数据节点32传送所述数据块之前,从所述队列单元370中获取所述数据块的索引,并且根据所述数据块的索引,来从所述存储单元320中读取所述数据块。因此,采用根据本发明第二实施例的用于处理一数据块的方法和数据节点,可以将数据块的索引、而不是数据块本身放入内存中,从而减少了数据节点在内存中存储的数据容量。此外,本发明人在提出上述用于处理一数据块的方法和数据节点之后,发现采用这种技术方案将导致以下情况的发生。即,在原生HDFS中,数据块的恢复机制是基于第一数据节点将自己的第一确认信息以及所接收到的N-1个其他数据节点的确认信息一起传送到该客户端、使得客户端能够知道该数据块的在N个数据节点中的冗余备份是否成功的原理来实现的;然而,由于在根据本发明的方法中,第一数据节点不必再等待随后的数据节点的确认信息就可以向客户端返回自己确认信息,因此,现有技术中的数据块的恢复机制可能无法继续应用。针对以上问题,本发明还提供了一种用于发起一数据块的恢复操作的方法和管理节点。在下文中,将参考图1、图7和图8来描述根据本发明的分布式文件系统、以及用于发起一数据块的恢复操作的方法和管理节点。如图1所图示的,根据本发明的分布式文件系统包括管理节点10和N个数据节点,即第一数据节点31、第二数据节点32........和第N数据节点3N。所述管理节点10用
于管理由客户端20提供的数据块在所述N个数据节点31-3N上的存储,N是所述数据块的副本数目。图7图示了根据本发明的用于发起一数据块的恢复操作的方法。根据本发明的用于发起一数据块的恢复操作的方法应用于一管理节点,所述管理节点属于根据本发明的分布式文件系统。具体地,所述方法包括:在步骤S710中,设置一计数器,所述计数器的初始值等于所述数据块的副本数目N;在步骤S720中,从所述N个数据节点中的每个数据节点接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中;在步骤S730中,根据所述确认信息来对所述计数器的值进行递减;以及在步骤S740中,在一预定的时间段之后,判断所述计数器的当前值I是否等于零;在步骤S750中,如果所述计数器的当前值I大于零,则发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。图8图示了根据本发明的用于发起一数据块的恢复操作的管理节点10。根据本发明的用于发起一数据块的恢复操作的管理节点10属于根据本发明的分布式文件系统。具体地,所述管理节点10包括:确认信息接收单元810,用于从所述N个数据节点中的每个数据节点接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中;计数器单元820,用于设置一计数器,所述计数器的初始值等于所述数据块的副本数目N,并且根据所述确认信息来对所述计数器的值进行递减;以及操作发起单元830,用于在一预定的时间段之后,判断所述计数器的当前值I是否等于零,如果所述计数器的当前值I大于零,则发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。由此可见,采用根据本发明的用于发起一数据块的恢复操作的方法和管理节点,对原生HDFS中的数据块恢复机制进行了调整,使得当在分布式文件系统中使用根据本发明的用于处理一数据块的方法和数据节点时,不再是由客户端对数据块副本数目进行监视,而是由管理节点全权管理数据块的存储,并且监视数据块的副本数目,以便在数据块由于在数据节点中的存储失败而导致副本数目不足时,触发执行相关数据块的恢复操作。在下文中,将参考图4、图9和图10来描述根据本发明实施例的分布式文件系统、以及用于发起一数据块的恢复操作的方法和名字节点。下面,仍然以Hadoop分布式文件系统(HDFS)为例来说明根据本发明实施例的分布式文件系统。图4图示了根据本发明实施例的分布式文件系统的框图。如4所图示的,根据本发明实施例的HDFS由一个名字节点11 (即,图1中的管理节点10)和3个数据节点31-33组成,其中假设了将数据块存储到3个不同的数据节点之中,即数据块的副本数目为3。图9图示了根据本发明实施例的用于发起一数据块的恢复操作的方法,而图10图示了根据本发明实施例的用于发起一数据块的恢复操作的名字节点。图9所图示的根据本发明实施例的用于发起一数据块的恢复操作的方法可以应用于图10所图示的名字节点11,以便对客户端20提供的数据块在3个数据节点31-33上的存储进行管理,并在必要时,发起所述数据块的恢复操作。与图8所图示的根据本发明的用于发起一数据块的恢复操作的管理节点10相似地,如图10所图示的,根据本发明实施例的用于发起一数据块的恢复操作的名字节点11包括:确认信息接收单元810、计数器单元820、以及操作发起单元830。其中,该操作发起单元830包括:选择部件831、列表生成部件832、和传送部件833。此外,该名字节点11还包括:信息生成传送单元840。如图9所图示的,根据本发明实施例的用于发起一数据块的恢复操作的方法包括:在步骤S910中,设置一计数器,所述计数器的初始值等于所述数据块的副本数目
N0在HDFS架构中,当客户端20想要创建一个文件时,名字节点11根据预先配置的数据块的副本数目N(在这里,N = 3),将包括3个数据节点的标识符及其先后顺序的一列表以及目标数据块返回给客户端20,接着,客户端20采用如上所述的根据本发明的用于处理一数据块的方法和数据节点,根据该列表中3个数据节点的先后顺序,来将这个数据块从本地临时文件上传到指定的3个数据节点上。由于在如上所述的根据本发明的用于处理一数据块的方法和数据节点中,对于原生HDFS中的确认机制进行了修改,所以此时,客户端20只能收到第一数据节点31传送的ACK(O)或ACK(I)的信息,而无法得知数据块在第二数据节点32和第三数据节点33的存储情况,因此,根据本发明实施例的名字节点11也无法从客户端20处得到当前数据块在第一到第三数据节点31-33中成功存储的确切的副本数目。在此情况下,在根据本发明实施例的名字节点11中,计数器单元820首先设置一计数器,所述计数器的初始值等于所述数据块的副本数目3。换言之,计数器单元820将3个副本数目设置为未决(pending)状态。在步骤S920中,在所述N个数据节点中的每个数据节点向管理节点传送的第一信息中,接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中。在HDFS架构中,数据节点31-33中的每一个数据节点周期性地向名字节点11发送心跳(heartbeat)信息,以便名字节点11通过监视每个数据节点的两次心跳的间隔来判断它是否还处于活动状态,如果超过预定的时间间隔仍未接收到某个数据节点的心跳信息,则名字节点11认为该数据节点已经宕机,并将不再将数据块存储到该数据节点上。例如,确认信息接收单元810可以在每个数据节点向名字节点11发送的上述心跳信息或心跳报告中,从每个数据节点接收相关的确认信息,使得名字节点11 了解该数据节点是否成功地将该数据块存储到自身的本地磁盘中。在替换示例中,对于与客户端20直接连接的第一数据节点31而言,客户端20也可以直接将第一数据节点31向它返回的确认信息传送到名字节点11的确认信息接收单元810,即第一数据节点31也可以不必在心跳信息中向名字节点10传送自己的确认信息。在步骤S930中,根据所述确认信息来对所述计数器的值进行递减。当从所述3个数据节点31-33之一接收到所述数据块的成功确认信息时,所述计数器单元820将所述计数器的值减一,即将处于未决状态的副本数目3减一,使得2个副本数目处于未决状态,并且当从所述3个数据节点之一接收到所述数据块的失败确认信息时,保持所述计数器的值不变。例如,当确认信息接收单元810从第一数据节点31接收到成功确认信息时,计数器单元820将所设置的计数器的初始值递减为3-1 = 2 ;当确认信息接收单元810从第二数据节点32接收到失败确认信息,并且没有从第三数据节点33接收到确认信息时,计数器单元820保持所设置的计数器的当前值不变,即计数器的值仍然等于2。在步骤S940中,在一预定的时间段之后,判断所述计数器的当前值I是否等于零。在操作发起单元830中,选择部件831在一预定的时间段(例如,两次心跳的间隔)之后,判断所述计数器的当前值I是否等于零。如果所述计数器的当前值I大于零,则执行步骤S950 ;而如果所述计数器的当前值I等于零,则说明第一到第三数据节点31-33都已经成功地将由客户端提供的该数据块存储在自身的本地磁盘中,即不必执行任何数据块的恢复操作,则此方法结束。在步骤S950中,发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。具体地,该步骤S950包括以下子步骤:重新选择用于存储所述数据块的I (I < N)个数据节点,所述I个数据节点不包括所述N个数据节点中的任何一个;生成一列表,所述列表包括所述I个数据节点及其顺序;以及向所述N个数据节点之一传送用于触发其进行所述数据块的I个副本的恢复操作的命令以及所述列表。例如,如上所述,当名字节点11从第一数据节点31接收到成功确认信息,从第二数据节点32接收到失败确认信息,并且没有从第三数据节点33接收到任何确认信息时,此时计数器的当前值I等于2。于是,操作发起单元830中的选择部件831重新选择用于存储所述数据块的2个数据节点,所述2个数据节点不包括第一到第三数据节点31-33中的任何一个。例如,选择部件831另外选择了第四数据节点和第五数据节点(未示出)来进行数据块的恢复操作,使得第四和第五数据节点能够代替存储失败的第二和第三数据节点32和33来存储该数据块,以便将该数据块的副本数目保持为3。然后,操作发起单元830中的列表生成部件832生成一列表,所述列表包括第四和第五2个数据节点的标识符及其先后顺序(例如,第四数据节点处于第五数据节点之前)。传送部件833向所述3个数据节点31_33之一传送用于触发其进行所述数据块的2个副本的恢复操作的命令以及所述列表。由于名字节点11从第一数据节点31接收到成功确认信息,所以可以确保第一数据节点31此时处于活动状态。优选地,传送部件833从在所述预定的时间段中从其接收到所述数据块的确认信息的数据节点之中,选择第K数据节点(即,在此示例中,第一数据节点31),并且在名字节点11向该第一数据节点31传送的第二信息中,将所述命令和所述列表传送到第一数据节点31。
例如,名字节点11周期性地从第一数据节点31接收到心跳信息,作为响应,名字节点11可以通过信息生成传送单元840来生成并向该第一数据节点31传送对于该数据节点31的心跳信息的响应信息。然后,传送部件833在信息生成传送单元840所生成的该响应信息中添加用于触发该第一数据节点31进行所述数据块的2个副本的恢复操作的命令以及所述列表,以在信息生成传送单元840向第一数据节点31传送该响应信息时,将所述命令和所述列表传送到所述第一数据节点31。从而,在所述第一数据节点31从名字节点11接收到该恢复操作的命令和列表之后,从自己的存储单元中获取该数据块,并且采用根据本发明的用于处理一数据块的方法来在根据本发明的第四和第五数据节点中进行存储,从而使得数据块在整个HDFS集群中保持为预定的3个副本。在步骤S960中,判断是否从J个数据节点又接收到成功确认信息。在操作发起单元830中,选择部件831还可以在发起所述数据块的I个副本的恢复操作的步骤之后,判断是否从JCJ < I)个数据节点又接收到所述数据块的成功确认信息,所述J个数据节点属于在所述预定的时间段中没有从其接收到所述数据块的确认信息的数据节点。如果是这样,则执行步骤S970 ;而如果不是这样,则此方法结束。在实践中,由于网络带宽的限制可能导致处于异地的数据节点(例如,第三数据节点33)的确认信息被延迟一段时间之后才传送到名字节点11,所以,名字节点11可能在发起所述数据块的I个副本的恢复操作的步骤之后,从J个数据节点又接收到所述数据块的成功确认信息。这时,会导致在整个HDFS集群中,该数据块的实际的副本数目(N+J个,在此,为了方便描述,假设在步骤S950中I个副本的恢复操作均成功)大于预定的副本数目(N个),于是,需要发起所述数据块的J个副本的删除操作,使得将所述数据块的副本数目保持为N个。在步骤S970中,发起所述数据块的J个副本的删除操作,使得将所述数据块的副本数目保持为N。具体地,该步骤S970包括以下子步骤:在从其接收到所述数据块的成功确认信息的数据节点中,选择用于删除所述数据块的J个数据节点;生成一列表,所述列表包括所述J个数据节点及其顺序;以及向所述J个数据节点之一传送用于触发其进行所述数据块的J个副本的删除操作的命令以及所述列表。例如,在发起所述数据块的2个副本的恢复操作的步骤之后,如果名字节点11从第三数据节点33 (即,J = I)又接收到所述数据块的成功确认信息,则这时,会导致在整个HDFS集群中,该数据块的实际的副本数目为4个(在此,为了方便描述,假设在步骤S950中第四和第五数据节点上执行的数据块恢复操作均成功),超出了预定的副本数目3个。于是,在操作发起单元830中,选择部件831在从其接收到所述数据块的成功确认信息的第一数据节点31、第三数据节点33以及第四和第五数据节点中,选择用于删除所述数据块的I个数据节点。例如,选择部件831选择第五数据节点来进行数据块的删除操作。然后,操作发起单元830中的列表生成部件832生成一列表,所述列表包括第五数据节点的标识符(由于只有一个数据节点,所以不包括先后顺序)。传送部件833向所述J个数据节点之一(此时,即第五数据节点)传送用于触发其进行所述数据块的I个副本的删除操作的命令以及所述列表。优选地,传送部件833在信息生成传送单元840所生成的对于该第五数据节点向该名字节点11周期性传送的心跳信息的响应信息中添加所述命令以及所述列表,以在信息生成传送单元840向第五数据节点传送该响应信息时,将所述命令和所述列表传送到所述第五数据节点。从而,在所述第五数据节点从名字节点11接收到该删除操作的命令和列表之后,从自己的存储单元中删除该数据块,从而使得数据块在整个HDFS集群中保持为预定的3个副本。在替换的实施例中,如果J大于1,则在所述第五数据节点从名字节点11接收到该删除操作的命令和列表之后,从自己的存储单元中删除该数据块,通过将自己从所述列表中删除,来更新所述列表,然后判断在所述更新后的列表中是否还存在数据节点,如果还存在随后的数据节点,则选择在顺序上处于最前面的数据节点,作为所述随后的数据节点,并向该随后的数据节点传送该命令以及更新后的列表,以便随后的数据节点从自己的存储单元中删除该数据块,并如此类推;如果不存在任何数据节点,则此方法结束。由此可见,采用根据本发明实施例的用于发起一数据块的恢复操作的方法和管理节点,使用管理节点来监视数据块的副本数目,以便在数据块由于在数据节点中的存储失败而导致副本数目不足时,触发执行相关数据块的恢复操作,并且在数据块由于错误的恢复操作而导致副本数目过多时,触发执行相关数据块的删除操作,从而,在分布式文件系统中将所述数据块的副本数目保持为N。尽管在上面以将根据本发明的用于处理一数据块的方法和数据节点、以及用于发起一数据块的恢复操作的方法和管理节点应用于Hadoop分布式文件系统(HDFS)为例来说明了本发明,然而,本领域技术人员能够理解的是,本发明不限于此,而是可以应用于任何一种分布式文件系统(DFS)。在上面详细描述了本发明的各个实施例。然而,本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可对这些实施例进行各种修改,组合或子组合,并且这样的修改应落入本发明的范围内。
权利要求
1.一种用于处理一数据块的方法,所述方法应用于一数据节点,所述数据节点属于一分布式文件系统,所述分布式文件系统包括管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述方法包括: 接收所述数据块; 将所述数据块存储到存储单元中; 生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中,并且返回所述确认信息;以及向随后的数据节点传送所述数据块。
2.根据权利要求1的方法,其特征在于, 在所述将所述数据块存储到存储单元中的步骤之后,所述方法还包括: 将所述数据块放置到一队列中,并且 在所述向随后的数据节点传送所述数据块的步骤之前,所述方法还包括: 从所述队列中获取所述数据块。
3.根据权利要求1的方法,其特征在于, 在所述将所述数据块存储到存储单元中的步骤之前,所述方法还包括: 向所述数据块分配一索引, 在所述将所述数据块存储到存储单元中的步骤之后,所述方法还包括: 将所述数据块的索引放置到一队列中,并且 在所述向随后的数据节点传送所述数据块的步骤之前,所述方法还包括: 从所述队列中获取所述数据块的索引;以及 根据所述数据块的索引,来从所述存储单元中读取所述数据块。
4.根据权利要求1的方法,其特征在于,所述方法还包括: 接收一列表,所述列表是由所述管理节点向所述客户端分配的,并且包括用于处理所述数据块的N个数据节点及其顺序。
5.根据权利要求4的方法,其特征在于,所述方法还包括: 通过将当前的数据节点从所述列表中删除,来更新所述列表。
6.根据权利要求5的方法,其特征在于,在所述向随后的数据节点传送所述数据块的步骤之前,所述方法还包括: 判断在所述更新后的列表中是否还存在数据节点;以及 如果还存在数据节点,则选择在顺序上处于最前面的数据节点,作为所述随后的数据节点。
7.根据权利要求1的方法,其特征在于,所述方法还包括: 在当前的数据节点向所述管理节点传送的第一信息中,向所述管理节点传送所述确认信息。
8.根据权利要求7的方法,其特征在于,所述第一信息是心跳信息。
9.一种用于处理一数据块的数据节点,所述数据节点属于一分布式文件系统,所述分布式文件系统包括管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述数据节点包括: 接收单元,用于接收所述数据块; 存储单元,用于将所述数据块存储到其中; 确认单元,用于生成一确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中;以及 传送单元,用于返回所述确认信息,并且向随后的数据节点传送所述数据块。
10.根据权利要求9的数据节点,其特征在于,所述数据节点还包括: 队列单元,用于在所述存储单元将所述数据块存储到其中之后,将所述数据块放置到其中;以及 线程池单元,在所述传送单元向随后的数据节点传送所述数据块之前,从所述队列单元中获取所述数据块。
11.根据权利要求9的数据节点,其特征在于,所述数据节点还包括: 分配单元,用于在所述存储单元将所述数据块存储到其中之前,向所述数据块分配一索引; 队列单元,用于在所述存储单元将所述数据块存储到其中之后,将所述数据块的索引放置到其中;以及 线程池单元,在所述传送单元向随后的数据节点传送所述数据块之前,从所述队列单元中获取所述数据块的索引,并且根据所述数据块的索引,来从所述存储单元中读取所述数据块。
12.根据权利要求9的数据节点,其特征在于, 所述接收单元还用于接收一列表,所述列表是由所述管理节点向所述客户端分配的,并且包括用于处理所述数据块的N个数据节点及其顺序。
13.根据权利要求12的数据节点,其特征在于,所述数据节点还包括: 更新单元,用于通过将当前的数据节点从所述列表中删除,来更新所述列表。
14.根据权利要求13的数据节点,其特征在于,所述数据节点还包括: 判断选择单元,用于在所述传送单元向随后的数据节点传送所述数据块之前,判断在所述更新单元更新后的列表中是否还存在数据节点,并且如果还存在数据节点,则选择在顺序上处于最前面的数据节点,作为所述随后的数据节点。
15.根据权利要求9的数据节点,其特征在于, 所述传送单元还用于在当前的数据节点向所述管理节点传送的第一信息中,向所述管理节点传送所述确认信息。
16.根据权利要求15的数据节点,其特征在于,所述第一信息是心跳信息。
17.一种用于发起一数据块的恢复操作的方法,所述方法应用于一管理节点,所述管理节点属于一分布式文件系统,所述分布式文件系统包括所述管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述方法包括: 设置一计数器,所述计数器的初始值等于所述数据块的副本数目N ; 从所述N个数据节点中的每个数据节点接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中;根据所述确认信息来对所述计数器的值进行递减;以及 在一预定的时间段之后,判断所述计数器的当前值I是否等于零; 如果所述计数器的当前值I大于零,则发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。
18.根据权利要求17的方法,其特征在于,所述从所述N个数据节点中的每个数据节点接收所述数据块的确认信息的步骤包括: 在所述N个数据节点中的每个数据节点向所述管理节点传送的第一信息中,从每个数据节点接收所述确认信息。
19.根据权利要求18的方法,其特征在于,所述第一信息是心跳信息。
20.根据权利要求17的方法,其特征在于,所述根据所述确认信息来对所述计数器的值进行递减的步骤包括: 当从所述N个数据节点之一接收到所述数据块的成功确认信息时,将所述计数器的值减一;以及 当从所述N个数据节点之 一接收到所述数据块的失败确认信息时,保持所述计数器的值不变。
21.根据权利要求17的方法,其特征在于,所述发起所述数据块的I个副本的恢复操作的步骤包括: 重新选择用于存储所述数据块的I个数据节点,所述I个数据节点不包括所述N个数据节点中的任何一个; 生成一列表,所述列表包括所述I个数据节点及其顺序;以及 向所述N个数据节点之一传送用于触发其进行所述数据块的I个副本的恢复操作的命令以及所述列表。
22.根据权利要求21的方法,其特征在于,所述向所述N个数据节点之一传送用于触发其进行所述数据块的I个副本的恢复操作的命令以及所述列表的步骤包括: 从在所述预定的时间段中从其接收到所述数据块的确认信息的数据节点之中,选择第K数据节点;以及 在所述管理节点向所述第K数据节点传送的第二信息中,向所述第K数据节点传送用于触发其进行所述数据块的I个副本的恢复操作的命令以及所述列表。
23.根据权利要求22的方法,其特征在于,所述第二信息是对于所述第K数据节点向所述管理节点传送的心跳信息的响应信息。
24.根据权利要求17的方法,其特征在于,在所述发起所述数据块的I个副本的恢复操作的步骤之后,所述方法还包括: 如果从J个数据节点又接收到所述数据块的成功确认信息,则发起所述数据块的J个副本的删除操作,使得将所述数据块的副本数目保持为N,所述J个数据节点属于在所述预定的时间段中没有从其接收到所述数据块的确认信息的数据节点。
25.根据权利要求24的方法,其特征在于,所述发起所述数据块的J个副本的删除操作的步骤包括: 在从其接收到所述数据块的成功确认信息的数据节点中,选择用于删除所述数据块的J个数据节点;生成一列表,所述列表包括所述J个数据节点及其顺序;以及 向所述J个数据节点之一传送用于触发其进行所述数据块的J个副本的删除操作的命令以及所述列表。
26.根据权利要求25的方法,其特征在于,所述向所述J个数据节点之一传送用于触发其进行所述数据块的J个副本的删除操作的命令以及所述列表的步骤包括: 从所述J个数据节点之中,选择第M数据节点;以及 在所述管理节点向所述第M数据节点传送的第二信息中,向所述第M数据节点传送用于触发其进行所述数据块的J个副本的删除操作的命令以及所述列表。
27.根据权利要求26的方法,其特征在于,所述第二信息是对于所述第M数据节点向所述管理节点传送的心跳信息的响应信息。
28.一种用于发起一数据块的恢复操作的管理节点,所述管理节点属于一分布式文件系统,所述分布式文件系统包括所述管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述管理节点包括: 确认信息接收单元,用于从所述N个数据节点中的每个数据节点接收所述数据块的确认信息,所述确认信息用于指示出所述数据节点是否成功地将所述数据块存储到所述数据节点的存储单元中; 计数器单元,用于设置一计数器,所述计数器的初始值等于所述数据块的副本数目N,并且根据所述确认信息来对所述计数器的值进行递减;以及 操作发起单元,用于在一预定的时间段之后,判断所述计数器的当前值I是否等于零,如果所述计数器的当前值I大于零,则发起所述数据块的I个副本的恢复操作,使得将所述数据块的副本数目保持为N。
29.根据权利要求28的管理节点,其特征在于,所述确认信息接收单元在所述N个数据节点中的每个数据节点向所述管理节点传送的第一信息中,从每个数据节点接收所述确认信息。
30.根据权利要求29的管理节点,其特征在于,所述第一信息是心跳信息。
31.根据权利要求28的管理节点,其特征在于,所述计数器单元当从所述N个数据节点之一接收到所述数据块的成功确认信息时,将所述计数器的值减一,并且当从所述N个数据节点之一接收到所述数据块的失败确认信息时,保持所述计数器的值不变。
32.根据权利要求28的管理节点,其特征在于,所述操作发起单元包括: 选择部件,用于在一预定的时间段之后,判断所述计数器的当前值I是否等于零,如果所述计数器的当前值I大于零,则重新选择用于存储所述数据块的I个数据节点,所述I个数据节点不包括所述N个数据节点中的任何一个; 列表生成部件,用于生成一列表,所述列表包括所述I个数据节点及其顺序;以及 传送部件,用于向所述N个数据节点之一传送用于触发其进行所述数据块的I个副本的恢复操作的命令以及所述列表。
33.根据权利要求32的管理节点,其特征在于,所述管理节点包括: 信息生成传送单元,用于生成并向每个数据节点传送第二信息,并且 所述传送部件从在所述预定的时间段中从其接收到所述数据块的确认信息的数据节点之中,选择第K数据节点,并且在所述信息生成传送单元向所述第K数据节点传送的第二信息中添加用于触发其进行所述数据块的I个副本的恢复操作的命令以及所述列表,以在所述第二信息中将所述命令和所述列表传送到所述第K数据节点。
34.根据权利要求33的管理节点,其特征在于,所述第二信息是对于所述第K数据节点向所述管理节点传送的心跳信息的响应信息。
35.根据权利要求28的管理节点,其特征在于,所述操作发起单元还用于在发起所述数据块的I个副本的恢复操作的步骤之后,如果从J个数据节点又接收到所述数据块的成功确认信息,则发起所述数据块的J个副本的删除操作,使得将所述数据块的副本数目保持为N,所述J个数据节点属于在所述预定的时间段中没有从其接收到所述数据块的确认信息的数据节点。
36.根据权利要求35的管理节点,其特征在于,所述操作发起单元包括: 选择部件,用于在发起所述数据块的I个副本的恢复操作的步骤之后,如果从J个数据节点又接收到所述数据块的成功确认信息,则在从其接收到所述数据块的成功确认信息的数据节点中,选择用于删除所述数据块的J个数据节点; 列表生成部件,用于生成一列表,所述列表包括所述J个数据节点及其顺序;以及 传送部件,用于向所述J个数据节点之一传送用于触发其进行所述数据块的J个副本的删除操作的命令以及所述列表。
37.根据权利要求36的方法,其特征在于,所述管理节点包括: 信息生成传送单元,用于生成并向每个数据节点传送第二信息,并且 所述传送部件从所述J个数据节点之中,选择第M数据节点,并且在所述信息生成传送单元向所述第M数据节点传送的第二信息中添加用于触发其进行所述数据块的J个副本的删除操作的命令以及所述列表,以在所述第二信息中将所述命令和所述列表传送到所述第M数据节点。
38.根据权利要求37的方法, 其特征在于,所述第二信息是对于所述第M数据节点向所述管理节点传送的心跳信息的响应信息。
全文摘要
本发明公开了一种用于处理数据块的方法,所述方法应用于数据节点,所述数据节点属于分布式文件系统,所述分布式文件系统包括管理节点和N个数据节点,所述管理节点用于管理由客户端提供的数据块在所述N个数据节点上的存储,N是所述数据块的副本数目,其特征在于,所述方法包括接收所述数据块;将所述数据块存储到存储单元中;生成确认信息,所述确认信息用于指示出是否成功地将所述数据块存储到所述存储单元中,并且返回所述确认信息;以及向随后的数据节点传送所述数据块。因此,本发明可以减少数据块在彼此之间处于异地的N个数据节点中进行复制冗余时的传送时间。
文档编号G06F17/30GK103207867SQ201210012919
公开日2013年7月17日 申请日期2012年1月16日 优先权日2012年1月16日
发明者张云龙 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1