分布式文件系统的数据备份方法.pdf

上传人:000****221 文档编号:6184777 上传时间:2019-05-18 格式:PDF 页数:26 大小:4MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410013486.2

申请日:

2014.01.11

公开号:

CN103761162A

公开日:

2014.04.30

当前法律状态:

授权

有效性:

有权

法律详情:

专利权的转移IPC(主分类):G06F 11/14登记生效日:20180205变更事项:专利权人变更前权利人:深圳清华大学研究院变更后权利人:清能艾科(深圳)能源技术有限公司变更事项:地址变更前权利人:518057 广东省深圳市南山区高新技术产业园南区深圳清华大学研究院大楼A302室变更后权利人:518000 广东省深圳市南山区粤海街道科技园南区深圳清华大学研究院A304-1室|||专利权的转移IPC(主分类):G06F 11/14登记生效日:20171019变更事项:专利权人变更前权利人:清能艾科(深圳)能源技术有限公司变更后权利人:深圳清华大学研究院变更事项:地址变更前权利人:518054 广东省深圳市南山区粤海街道科技南区深圳清华大学研究院A304-1变更后权利人:518057 广东省深圳市南山区高新技术产业园南区深圳清华大学研究院大楼A302室|||专利权的转移IPC(主分类):G06F 11/14登记生效日:20170821变更事项:专利权人变更前权利人:深圳清华大学研究院变更后权利人:清能艾科(深圳)能源技术有限公司变更事项:地址变更前权利人:518057 广东省深圳市南山区高新技术产业园南区深圳清华大学研究院大楼A302室变更后权利人:518054 广东省深圳市南山区粤海街道科技南区深圳清华大学研究院A304-1|||授权|||实质审查的生效IPC(主分类):G06F 11/14申请日:20140111|||公开

IPC分类号:

G06F11/14; G06F17/30

主分类号:

G06F11/14

申请人:

深圳清华大学研究院

发明人:

武永卫; 陈康; 郑纬民; 李贞强

地址:

518057 广东省深圳市南山区高新技术产业园南区深圳清华大学研究院大楼A302室

优先权:

专利代理机构:

深圳市鼎言知识产权代理有限公司 44311

代理人:

孔丽霞

PDF下载: PDF下载
内容摘要

本发明提供一种分布式文件系统的数据备份方法,该方法包括:同步控制节点创建线程池,根据拷贝列表为各线程分配源文件,并行进行各源文件和对应目标文件的元数据同步;同步控制节点的各线程通过判定源和目标文件中的各文件块的内容一致性,分析各自分配的源文件和对应目标文件的差异;源数据节点通过判定源和目标文件块中各chunk的内容一致性,分析源和目标文件块的差异;目标数据节点根据源和目标文件块的差异分析结果,备份源文件块的数据至对应目标文件块。该方法有效利用目标文件系统的目标文件的已有数据,减少跨集群的数据节点间的数据传输,且一个文件的备份过程中以文件块为单位并行备份,减少了数据备份的执行时间。

权利要求书

权利要求书
1.  一种分布式文件系统的数据备份方法,应用于两个集群的HDFS文件系统,其特征在于,该方法包括:
元数据同步步骤:同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表,同步该拷贝列表中所有源和目标文件的元数据,并生成各源文件的文件校验码列表;
文件差异分析步骤:同步控制节点将源文件的每个文件块的校验码与目标文件的各文件块的校验码进行比较,判定源和目标文件中各文件块的内容一致性,根据判定结果替换文件校验码列表中的源文件块和源数据节点,并将文件校验码列表的各行记录发送至相应的源数据节点;
文件块差异分析步骤:源数据节点接收文件校验码列表的行记录,将该行记录中的源文件块的每个chunk的校验码与目标文件块的各chunk的校验码进行比较,判定源和目标文件块中各chunk的内容一致性,根据判定结果生成文件块差异表,并将该文件块差异表和接收的文件校验码列表的行记录发送给对应的目标数据节点;及
数据备份步骤:目标数据节点创建临时文件块,根据接收的文件块差异表写入数据至该临时文件块,以临时文件块的内容替换目标文件块的内容。

2.  如权利要求1所述的分布式文件系统的数据备份方法,其特征在于,所述的元数据同步步骤包括:
a)同步控制节点根据客户端输入的源路径从源文件系统的元数据节点获取拷贝列表,创建线程池并根据该拷贝列表为每个线程分配源文件,该拷贝列表为源路径下的所有源文件的列表,包括各源文件的文件名、大小以及文件路径;
b)同步控制节点的各线程从源文件系统的元数据节点获取各线程 被分配的源文件的元数据,根据源文件的元数据从相应的源数据节点中分别获取源文件包含的各文件块的校验码;
c)同步控制节点的各线程从目标文件系统的元数据节点获取各源文件对应的目标文件的元数据,比较源和目标文件的大小,根据比较结果,向目标文件系统的元数据节点申请创建或删除目标文件的文件块,使得目标文件大小与源文件一致;
d)同步控制节点的各线程从目标文件系统的元数据节点重新获取各目标文件的元数据,根据各目标文件的元数据从相应的目标数据节点获取各目标文件包含的所有文件块的校验码;
e)同步控制节点的各线程根据各自的源和目标文件的元数据以及所有源和目标文件块的校验码生成文件校验码列表,该文件校验码列表包括:文件块的序号、源文件块ID、源文件块校验码、源数据节点ID和目标文件块ID、目标文件块校验码、目标数据节点ID以及目标文件块是否为新创建文件块的标记位Flag。

3.  如权利要求1所述的分布式文件系统的数据备份方法,其特征在于,所述的文件差异分析步骤包括:
a)依次将源文件的每个文件块的校验码分别与目标文件的所有目标文件块的校验码进行比较,判定源和目标文件块的内容一致性;
b)当存在与源文件块内容相同的目标文件块,则将文件校验码列表中该源文件块的序号对应的源文件块ID和源数据节点ID分别替换为与该源文件块校验码相同的目标文件块的文件块ID和目标数据节点ID,当不存在与源文件块内容相同的目标文件块时,则返回步骤a继续下一个源文件块的比较;
c)判定是否为最后一个源文件块,若是,则进入步骤d,否则返回步骤a继续下一个源文件块的比较;
d)遍历文件校验码列表,删除源和目标文件块ID相同且源和目标数据节点ID相同的行记录;
e)根据源数据节点ID,将文件校验码列表的各行记录分别发送至相应的源数据节点。

4.  如权利要求1所述的分布式文件系统的数据备份方法,其特征在于,所述的文件块差异分析步骤包括:
a)源数据节点接收文件校验码列表的行记录,向目标数据节点发送该行记录和目标文件块校验码列表请求以获取目标文件块包含的各chunk和各chunk的校验码;
b)源数据节点将行记录中的源文件块等分为多个相同大小的有序chunk,根据摘要算法计算各chunk的校验码;
c)目标数据节点接收行记录和目标文件块校验码列表请求,将目标文件块等分为多个相同大小的有序chunk并计算各chunk的校验码,生成目标文件块校验码列表,返回给源数据节点,该目标文件块校验码列表包括:目标文件块中各chunk的序号、目标chunk ID和目标chunk的校验码;
d)源数据节点接收目标文件块校验码列表,并创建源文件块的文件块差异表,该文件块差异表包括:源文件块中各chunk的序号、源chunk ID和差异信息;
e)源数据节点依次将源文件块的每个chunk的校验码分别与目标文件块的所有目标chunk的校验码进行比较,判定源和目标chunk的内容一致性;
f)当存在与源chunk的内容相同的目标chunk,修改文件块差异表中该源chunk的ID为该目标chunk的ID;
g)当不存在与源chunk的内容相同的目标chunk,修改文件块差异表中该源chunk的ID为NULL并将该源chunk的内容写入差异信息;
h)判定是否为最后一个源chunk,若是,则进入步骤i,否则返回步骤e继续下一个源chunk的比较;
i)源数据节点发送该文件块差异表给相应的目标数据节点。

5.  如权利要求1所述的分布式文件系统的数据备份方法,其特征在于,所述的数据备份步骤包括:
a)目标数据节点接收源数据节点发送的文件块差异表并创建一个大小与目标文件块大小相同的临时文件块;
b)遍历该文件块差异表,依次判定各源chunk ID是否为空值;
c)当源chunk ID为空值,则获取目标文件中的chunk ID与该源chunk ID相同的目标chunk的内容写入该临时文件块;当源chunk ID不为空值,则获取文件块差异表中该源chunk ID对应的差异信息写入该临时文件块;
d)判定是否为最后一个源chunk,若是则进入步骤e,否则返回步骤b继续下一个源chunk的比较;
e)以该临时文件块的内容替换目标文件块的内容,目标数据节点完成对源文件块的备份。

6.  如权利要求3所述的分布式文件系统的数据备份方法,其特征在于,所述的文件差异分析步骤中的步骤a通过以下步骤判定源和目标文件块的内容一致性:
a1)根据相同的哈希函数计算源和目标文件所包含的各文件块的校验码的哈希值;
a2)依次将每个源文件块的哈希值分别与目标文件包含的所有目标文件块的哈希值进行比较;
a3)当不存在与源文件块的哈希值相同的目标文件块,则不存在于源文件块内容相同的目标文件块;
a4)当存在与源文件块的哈希值相同的目标文件块,则比较该源文件块的校验码和与该源文件块哈希值相同的目标文件块的校验码;
a5)当与源文件块哈希值相同的目标文件块中存在与源文件块的校验码相同的目标文件块,则存在与源文件块相同的目标文件块。

7.  如权利要求4所述的分布式文件系统的数据备份方法,其特征 在于,所述的文件块差异分析步骤中的步骤e之前还包括以下步骤:
源数据节点根据接收的文件校验码列表的行记录中的标记位Flag判定目标文件块是否为新创建的文件块;
当目标文件块为已有的文件块,跳转至该步骤e判定源和目标文件块所包含的各chunk的内容一致性;
当目标文件块为新创建的文件块,则依照各源chunk的序号将源文件中各chunk的内容写入到文件差异表中的差异信息中并将各源chunk ID修改为NULL,跳转至步骤i,将该文件块差异表发送至相应的目标数据节点。

8.  如权利要求4所述的分布式文件系统的数据备份方法,其特征在于,所述的文件块差异分析步骤中的步骤e通过以下步骤判定源和目标chunk的内容一致性:
e1)根据相同的哈希函数计算源和目标文件块所包含的各chunk的校验码的哈希值;
e2)依次将每个源chunk的哈希值分别与目标文件块包含的所有目标chunk的哈希值进行比较;
e3)当不存在与源chunk的哈希值相同的目标文件块,则不存在与源chunk内容相同的目标chunk;
e4)当存在与源chunk的哈希值相同的目标chunk,则比较该源chunk的校验码和与该源chunk哈希值相同的目标chunk的校验码;
e5)当与源chunk哈希值相同的目标chunk中存在与源chunk的校验码相同的目标chunk,则存在与源chunk相同的目标chunk。

9.  如权利要求3所述的分布式文件系统的数据备份方法,其特征在于,所述的文件差异分析步骤中,当存在与源文件块内容相同的目标文件块,在执行步骤b的替换操作之前,还包括步骤:
将被替换的源文件块ID、源数据节点ID和源文件块的序号保存至源文件块备份表中,该源文件块备份表包括源文件块的序号、源文件 块ID和源数据节点。

10.  如权利要求9所述的分布式文件系统的数据备份方法,其特征在于,所述的文件差异分析步骤中,步骤e通过以下步骤发送文件校验码列表的各行记录:
e1)根据源文件块备份表的序号从文件校验码列表中依次筛选出源数据节点ID为目标文件系统的数据节点的行记录;
e2)根据筛选出各行记录的序号依次创建有向边,构造一个有相无环图,其中,通过以下步骤构造有相无环图:
以各行记录中源数据节点ID和目标数据节点ID为顶点,由源数据节点至目标数据节点的数据传输为一条有向边;
当根据筛选行记录创建的有向边使得该有相无环图构成环路,则根据该文件校验码列表行记录中的源文件块序号将该文件校验码列表行记录中的位于目标文件系统的源数据节点ID和源数据节点ID替换为源文件块备份表中相同源文件块序号的位于源文件系统的相应源文件块ID和源数据节点ID,并删除源文件块备份表中与文件校验码列表行记录的源文件块序号相同的行;
e3)选取有相无环图中出度为零的顶点所在的边,发送所选取的边对应的行记录并于有相无环图中删除选取的边,迭代执行步骤c,重新选取出度为零的边,发送相应的行记录并删除边,直至有相无环图为空;
e4)依次发送源文件块序号不存在于源文件块备份列表中的其余各行记录即文件校验码列表中源数据节点ID不位于目标文件系统的数据节点的各行记录,包括未被筛选出的行记录以及被筛选出且被重新替换为源文件系统的源文件块ID和源数据节点ID的行记录。

说明书

说明书分布式文件系统的数据备份方法
技术领域
本发明涉及分布式文件系统,具体涉及不同分布式文件系统的集群之间数据备份的技术或称之为文件同步的技术。
背景技术
HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),是一种采用Java语言开发的开源分布式文件系统,具有高容错性,适用于超大数据集的应用程序。为了避免因设备故障、突发断电或是自然灾害(如地震、海啸等)而引起数据的丢失,需要将某一文件系统(源文件系统)中的数据备份或迁移至地理位置相隔较远且相对安全的集群的另外一个文件系统(目标文件系统)中。HDFS提供一个数据备份命令distcp(Distribute Copy,分布式数据复制),用于不同集群的文件系统之间进行数据备份,distcp是一个MapReduce作业,复制的工作由集群中并行运行的Map完成。
该复制命令是将每个文件分配一个单一的Map进行复制,是基于文件级的复制,在数据备份时删除目标文件系统的目标文件重新写入源文件,即使目标文件中已存在源文件的某些文件块内容也会删除后重新写入,因此,采用该方法进行数据备份时耗时过长,容易导致带宽占用严重,网络负荷过大。另外,采用该方法进行数据备份或文件系统迁移时,若执行过程中发生了异常中断,此时目标文件系统中已包含了中断前备份成功的大量目标文件,而当再次重新开始备份时,目标文件系统中已成功备份的文件仍被删除后重新写入。
发明内容
鉴于上述内容,有必要提供一种分布式文件系统的数据备份方法, 能够有效利用目标文件系统的目标文件的已有数据,分析源和目标文件系统中源和目标文件的信息,在数据备份之前制定数据传输的策略,减少跨集群的数据节点间的数据传输,降低了数据备份的执行时间。
所述分布式文件系统的数据备份方法,该方法包括:
同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表,同步该拷贝列表中所有源和目标文件的元数据,并生成各源文件的文件校验码列表,其中,该拷贝列表为同步控制节点从源文件系统的元数据节点获取的源路径下的所有源文件的列表;
同步控制节点将源文件中的每个文件块的校验码与目标文件的各文件块的校验码进行比较,判定源和目标文件中各文件块的内容一致性,根据判定结果更新文件校验码列表中的源文件块和源数据节点,并将文件校验码列表的各行记录发送至相应的源数据节点;
源数据节点接收文件校验码列表的行记录,将该行记录中的源文件块的每个chunk的校验码与目标文件块的各chunk的校验码进行比较,判定源和目标文件块中各chunk的内容一致性,根据判定结果生成文件块差异表,并将该文件块差异表和接收的文件校验码列表的行记录发送给对应的目标数据节点;
目标数据节点创建临时文件块,根据接收的文件块差异表写入数据至该临时文件块,以临时文件块的内容替换目标文件块的内容。
相比于现有技术,本发明所述的分布式文件系统的备份方法,有效利用目标文件系统的已有目标文件的数据,判定备份过程中的源文件块的数据由源文件系统的数据节点还是目标文件系统的数据节点发送,减少跨集群的数据节点间的数据传输,且在备份时以文件块为单位并行备份,减少了数据备份的执行时间。
附图说明
图1是本发明所述的分布式文件系统的数据备份方法的较佳实施 例的应用环境图。
图2是本发明所述的分布式文件系统的数据备份方法的较佳实施例的总流程图。
图3是对图2中步骤S01进行详细说明的细化流程图。
图4是对图2中步骤S02进行详细说明的细化流程图。
图5是对图2中步骤S03进行详细说明的细化流程图。
图6是对图2中步骤S04进行详细说明的细化流程图。
图7是步骤S01创建的文件校验码列表的示意图。
图8是执行步骤S02后的文件校验码列表的示意图。
图9是源文件块备份表的示意图。
图10是根据图8所示的文件校验码列表中源数据节点ID为目标文件系统的数据节点的所有行记录创建的DAG图。
图11是同步控制节点根据图10发送部分行记录之后的有相无环图。
图12是目标文件块的哈希表的示意图。
图13是目标文件块校验码列表的示意图。
图14是目标chunk的哈希表的示意图。
图15是文件块差异表的示意图。
以下具体实施方式将结合上述各附图,详细说明本发明所述的分布式文件系统的数据备份方法的实现。
具体实施方式
在结合具体实施方式说明本发明的技术方案之前,首先对HDFS文件系统的相关概念进行简要介绍。HDFS文件系统是主从结构,包括一个元数据节点(Name Node,元数据节点或名字节点)和若干数据节点(Data Node),允许用户以文件形式存储数据,每个文件被分成若干个有序文件块或数据块(通常为64MB大小),存放在一组数据节点上。 该元数据节点作为主服务器提供元数据服务以及客户端对文件的访问操作等,该数据节点用于管理存储的数据。此外,本发明所述的数据备份方法为了加快数据备份过程中文件传输速度,引入了chunk的概念。所述chunk是指将一个文件块按大小等分为若干数量(默认为256个)的文件块的基本单位,称为文件片,是一个虚拟的逻辑上的文件块的最小存储单元。
本发明所述的分布式文件系统的数据备份方法(以下简称“数据备份方法”)用于两个不同集群的HDFS文件系统之间进行数据备份,提供一个类似distcp的数据备份命令,该数据备份命令的参数包括源和目标文件系统的路径,用于将源路径下的目录和文件复制到目标路径。
为了方便说明,本较佳实施例中,将源和目标文件系统中的文件分别称为源文件和目标文件(简称“源和目标文件”),源和目标文件系统的数据节点分别称为源数据节点和目标数据节点(简称“源和目标数据节点”),源和目标文件所包含的文件块分别称为源文件块和目标文件块(简称“源和目标文件块”),源和目标文件块所包含的chunk分别称为源chunk和目标chunk(简称“源和目标chunk”)。
以上通过使用“源”和“目标”以对数据备份的两个物理位置以及存储独立的文件系统中的节点、文件、文件块以及chunk进行区分,但是需要特别指出的是,在本较佳实施例中,源数据节点、源文件、源文件块以及源chunk除了字面上所表示的区别于目标文件系统而是位于源文件系统中的节点、文件、文件块以及chunk的含义之外,在某些情形下还有另外的含义,是指数据备份过程中作为数据发送方的节点、文件、文件块以及chunk,而此时数据发送方并不仅限于源文件系统,因为按照本发明所述的数据备份方法,在数据备份过程中,源文件系统中的某些文件的文件块的内容并非由该文件块所在的数据节点发送给进行备份的目标数据节点,而是由目标文件系统中某些内容一致的目标文件块所在的数据节点发送给进行备份的目标数据节点。 在下述说明中将会对“源数据节点、源文件、源文件块以及源chunk”作为“数据发送方的节点、文件、文件块以及chunk”的含义进行理解的情形和原因具体阐述。
参阅图1所示,是所述数据备份方法的较佳实施例的应用环境图。
如图1所示,客户端提供一个用户界面供用户对源文件系统的文件或目录进行各种操作,例如:创建、移动、删除或备份等。源和目标文件系统是两个不同集群的HDFS文件系统,其中,该源文件系统包括元数据节点s以及多个数据节点s-a至s-d,该目标文件系统包括元数据节点d以及多个数据节点d-a至d-d,实际应用中,源和目标文件系统的数据节点个数因集群建制而异。同步控制节点用于协调源和目标文件系统的元数据节点之间的通信,控制源和目标文件系统元数据的同步并传输数据传输策略给源和目标文件系统的数据节点,数据节点之间进行文件块传输,实现数据备份。本较佳实施例中,为了区别源和目标文件系统中元数据节点和数据节点的工作,该同步控制节点是独立的一个机器节点,在其他实施例中,该同步控制节点还可以是源文件系统或目标文件系统中的元数据节点或数据节点担当。图1中各节点间通信及数据传输过程在以下各流程图的说明中具体阐述。
参阅图2所示,是所述数据备份方法的较佳实施例的总流程图。
如图2所示,本发明所述的数据备份方法实现源和目标文件系统的数据备份的过程为:首先,如步骤S01所述,同步控制节点同步源和目标文件系统中文件的元数据,具体来说,同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表,同步该拷贝列表中所有源和目标文件的元数据,并生成各源文件的文件校验码列表,详细步骤参见图3所示的流程图;其次,如步骤S02所述,同步控制节点通过判定源和目标文件中的各文件块的内容一致性,分析源和目标文件的差异,具体来说,同步控制节点将源文件的每个文件块的校验码与目标文件的各文件块的校验码进行比较,判定源和目标文件中各 文件块的内容一致性,根据判定结果替换文件校验码列表中的源文件块和源数据节点,并将文件校验码列表的各行记录发送至相应的源数据节点,详细步骤参见图4所示的流程图;然后,如步骤S03所述,源数据节点通过判定源和目标文件块中各chunk的内容一致性,分析源和目标文件块的差异,具体来说,源数据节点接收文件校验码列表的行记录,将该行记录中的源文件块的每个chunk的校验码与目标文件块的各chunk的校验码进行比较,判定源和目标文件块中各chunk的内容一致性,根据判定结果生成文件块差异表,并将该文件块差异表和接收的文件校验码列表的行记录发送给对应的目标数据节点,详细步骤参见图5所示的流程图;最后,如步骤S04所述,目标数据节点根据源和目标文件块的差异分析结果,备份源文件块的数据至对应目标文件块,具体来说,目标数据节点创建临时文件块,根据接收的文件块差异表写入数据至该临时文件块,以该临时文件块的内容替换目标文件块的内容,完成了对源文件块的备份,详细步骤参见图6所示的流程图。综上,本发明所述的数据备份方法在数据备份过程中并行执行多个源文件的备份,其中,备份一个源文件时以文件块为单位并行执行多个源文件块的备份,相较于现有数据备份方法,有效改善了数据备份耗时过长的问题,同时,在备份时比较源和目标文件的内容,尽量减少备份过程中出现跨集群的数据节点间数据传输的情形,降低网络带宽占用。
以下将结合图3至图6的细化流程图对图2各步骤进行详细说明。
步骤S01,同步控制节点同步源和目标文件系统中文件的元数据,具体来说,同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表,同步该拷贝列表中所有源和目标文件的元数据,并生成各源文件的文件校验码列表。
所述拷贝列表是同步控制节点根据数据备份命令的源路径从源文件系统的元数据节点获取该源路径下所有源文件的列表。所述元数据 (meta data)包括文件和目录自身的属性信息(例如文件名、目录名、文件大小等)、文件存储相关信息(例如文件分块状况、副本个数等)以及HDFS中所有数据节点的信息(例如文件块与数据节点的映射)。所述源和目标文件的元数据的同步是指根据拷贝列表依次检查源文件是否在目标文件系统中存在对应的目标文件以及源文件和目标文件的大小是否一致,若不存在目标文件则向目标文件系统的元数据节点申请创建同等大小的文件,若源和目标文件大小不一致则创建或删除目标文件的文件块使得源和目标文件大小一致。需要说明的是,本较佳实施例中,源和目标文件系统是相同版本的HDFS文件系统,两者创建文件块的大小默认为64MB,则同步源和目标文件的元数据后,在目标文件系统中存在与源文件相同大小的目标文件,且源和目标文件的文件块个数和文件块大小相同。所述文件校验码列表包括文件块的序号、源文件块ID、源文件块校验码、源数据节点ID和目标文件块ID、目标文件块校验码、目标数据节点ID以及目标文件块是否为新创建文件块的标记位Flag。所述文件块校验码是用于验证文件块的数据完整性的一个32位的十六进制数字串,存储在该文件块的同一个HDFS命名空间下的一个单独的隐藏文件中。
以下结合图3所示步骤S01的细化流程图,详细说明上述步骤S01。
步骤S101,同步控制节点根据客户端输入的源路径从源文件系统的元数据节点获取拷贝列表,创建线程池,并根据该拷贝列表为每个线程分配源文件。
该拷贝列表为源路径下的所有需备份的源文件列表,包括各源文件的文件名、大小以及文件路径。本较佳实施例中,同步控制节点创建线程池,根据拷贝列表为线程池中的各线程分配不同的源文件,并行进行各源文件与对应目标文件的元数据同步。
步骤S102,同步控制节点的各线程从源文件系统的元数据节点获取各线程被分配的源文件的元数据,根据源文件的元数据从相应的源 数据节点中分别获取源文件包含的各文件块的校验码。
所述的元数据包括有文件大小、分块状况、各文件块与数据节点的映射等信息,本较佳实施例中,根据源文件块所在的数据节点的IP和端口号,分别从相应的源数据节点中获取各源文件块的校验码。
步骤S103,同步控制节点的各线程从目标文件系统的元数据节点获取各源文件对应的目标文件的元数据,比较源和目标文件的大小,根据比较结果,向目标文件系统的元数据节点申请创建或删除目标文件的文件块,使得目标文件大小与源文件一致。
具体来说,同步控制节点中的线程根据该线程被分配的源文件的文件名以及文件路径从目标文件系统的元数据节点中获取目标文件的元数据,比较源和目标文件的大小,当源文件大小大于目标文件,则向目标文件系统的元数据节点申请创建新的文件块以使目标文件与源文件大小一致,当源文件大小小于目标文件,则从目标文件最后的文件块开始删除以使得目标文件与源文件大小一致。
需要说明的是,当源文件在目标文件系统中不存在相应的目标文件,即该目标文件的大小为零,则向目标文件系统的元数据节点申请创建与源文件大小一致的目标文件,创建文件的过程实为文件块的创建,故本较佳实施例中,并未预先判定目标文件的存在性,而直接比较源和目标文件的大小。
步骤S104,同步控制节点的各线程从目标文件系统的元数据节点重新获取各目标文件的元数据,根据各目标文件的元数据从相应的目标数据节点获取各目标文件包含的所有文件块的校验码。
具体来说,经步骤S103进行创建或删除目标文件的文件块之后,目标文件的元数据有变更,故步骤S104再次获取目标文件的元数据。
步骤S105,同步控制节点的各线程根据各自的源和目标文件的元数据以及各源和目标文件所包含的文件块的校验码生成文件校验码列表,该文件校验码列表包括:文件块的序号、源文件块ID、源文件块 校验码、源数据节点ID和目标文件块ID、目标文件块校验码、目标数据节点ID以及目标文件块是否为新创建文件块的标记位Flag。
本较佳实施例中,源和目标文件系统为相同版本的HDFS文件系统,两个文件系统的文件块默认为64MB大小,则当源和目标文件大小一致时,源和目标文件块一一对应,使得后续可以以文件块为单位并行的进行源和目标文件块的备份,相较于现有技术中以文件为单位并行复制,提升了数据并行传输速率以及缩短了备份时间。
需要指出,同步控制节点分配多个线程并行执行各源文件的备份作业,则每个线程各自生成分配的源文件的文件校验码列表。如图7所示,序号为源文件包括的各文件块的序号,反映了各文件块在源文件的读写顺序;源和目标文件块ID为源和目标文件系统为各自集群中数据节点的文件块分配的唯一识别文件块的字符串序列;源和目标文件块校验码为用于验证源和目标文件块的数据完整性的32位的十六进制数字串;源和目标数据节点ID为源和目标文件块所在数据节点的IP和端口号(例如:10.134.91.70:3800);Flag为目标文件块是否为新创建文件块的标记位,当目标文件块为目标文件已有的文件块则Flag标记为1,当目标文件块为新创建的文件块则Flag标记为0。
如图7所示,源文件包括4个文件块S1、S2、S3、S4且分别位于源数据节点s-a、s-b、s-c和s-d,目标文件包括4个文件块D1、D2、D3、D4且分别位于目标数据节点d-b、d-c、d-a和d-d,其中,目标文件块D4的Flag为0即经步骤S103创建的文件块,目标文件块D1、D2、D3的Flag为1即为该源文件对应的目标文件中已有文件块。由文件校验码列表可清楚得知源和目标文件块的对应关系和数据传输的发送和接收方的网络配置。
需要说明,上述步骤S01的具体说明中源数据节点、源文件和源文件块分别是指位于源文件系统中数据节点、文件和文件块。
综上,同步控制节点创建线程池,根据拷贝列表为每个线程分配 源文件,各线程以文件为单位并行执行源和目标文件的元数据同步。步骤S01主要实现了源和目标文件的元数据的同步,保证源文件在目标文件系统中存在相同大小的目标文件,并根据源和目标文件的元数据和所包含文件块的校验码生成文件校验码列表。
步骤S02,同步控制节点通过判定源和目标文件中的各文件块的内容一致性,分析源和目标文件的差异,具体来说,同步控制节点将源文件中的每个文件块的校验码与目标文件的各文件块的校验码进行比较,判定源和目标文件中各文件块的内容一致性,根据判定结果替换文件校验码列表中的源文件块和源数据节点,并将文件校验码列表的各行记录发送至相应的源数据节点。
在实际应用中,目标文件系统作为源文件系统的备援系统,当源文件系统中出现新增文件或是文件内容变更等情形时,需进行一次数据备份,以保证目标文件系统的数据与源文件系统的数据一致。现有的数据备份方法distcp命令在备份时,以文件为单位将目标文件删除并由源文件系统的数据节点传输源文件的数据重新写入,该做法需要大量数据传输容易引起带宽占用率过高,网络负载过大。分析用户更新文件的行为,源文件相较于目标文件的变动可能是新增文件块、修改已有某个文件块内容、删除某个已有文件块或文件块顺序的变更等,可见,源文件中的大多数据是未变动的,另外,大多数情况下,同一集群内部数据节点间通信的网络带宽优于跨集群的数据节点间通信的网络带宽,鉴于此,本较佳实施例中,步骤S02以文件块为单位,比较源和目标文件块的内容的一致性,判定需要备份的源文件块并进一步判定该源文件块的数据由源还是目标文件系统的数据节点发送。
以下结合图4所示步骤S02的细化流程图,详细说明上述步骤S02,其中,同步控制节点的各线程各自执行下述的步骤S201~S209,并行的对各自分配的源文件和对应的目标文件所包含的文件块进行内容一致性判定,并根据判定结果替换各自源文件的文件校验码列表中的源文 件块和源数据节点。
步骤S201,根据文件校验码列表中源和目标文件块的校验码,以相同的哈希函数计算源和目标文件块的校验码的哈希值(简称“源和目标文件块的哈希值”)。
源和目标文件块的校验码是将文件块的内容经由摘要算法输出的一定长度的十六进制的数字串,用于验证数据的完整性。在本较佳实施例中,通过比较源和目标文件块的校验码来判定源和目标文件块的内容一致性即当源和目标文件块的校验码一致则认定两文件块的内容是一致的。当源和目标文件块数目较多,比对32位的十六进制校验码的耗时较长,为了提高执行效率,本较佳实施例中,根据相同的哈希函数计算源和目标文件块的哈希值,首先比较哈希值,当哈希值不同则源和目标文件块内容定然不同,当哈希值相同则进一步比较校验码是否相同,当校验码相同则源和目标文件块内容相同,上述文件块内容一致性的判定过程具体参见下述步骤S202至S205。
本较佳实施例中,哈希函数采用文件块32位校验码除以128,取余数作为文件块的校验码的哈希值(简称“文件块的哈希值”),如图12所示为目标文件块的哈希表的示意图,该目标文件块的哈希表包括目标文件块ID、目标文件块校验码以及由哈希函数计算出的校验码的哈希值,其中,由上述哈希函数计算的哈希值的取值范围为0~127的任意整数,且相同的哈希值对应多个不同的文件块校验码,另外,源文件的各文件块的哈希值也存储于与图12类似的哈希表中,此处不赘述。
步骤S202,每个源文件块的哈希值分别与该源文件对应的目标文件的所有目标文件块的哈希值进行比较。
具体来说,源文件的每个文件块分别与对应目标文件的所有文件块的内容进行比较,找出与任一源文件块相同的目标文件块,以减少跨集群的数据节点间的数据传输的情形。如图7所示,假设源文件块 S4的内容与目标文件块D3的内容一致,结合图1看,与源文件块S4的文件块序号一致的目标文件块D4可以通过两种方式获取写入的数据:由目标数据节点d-a发送目标文件块D3的内容至与目标数据节点d-d,由源数据节点s-b发送源文件块S4的内容至目标数据节点d-d,基于集群内部数据节点间的数据传输的带宽优于跨集群的数据节点的数据传输,选择前者更适于大量数据的传输。
步骤S203,是否存在与源文件块的哈希值相同的目标文件块,若存在,则进入步骤S204,否则进入步骤S207。
步骤S204,比较源文件块的校验码和与该源文件块哈希值相同的目标文件块的校验码。
步骤S205,判定哈希值相同的目标文件块中,是否存在校验码与源文件块相同的目标文件块,若存在,则进入步骤S206,否则进入步骤S207。
因不同校验码经哈希函数计算可能得到相同哈希值,故为了进一步验证源和目标文件块内容的一致性,当源文件块的哈希值与某些目标文件块的哈希值相同,需进一步判定两者的校验码是否相同。
步骤S206,将文件校验码列表中该源文件块ID和源数据节点ID分别替换为与源文件块校验码相同的目标文件块的文件块ID和目标数据节点ID。
如图7所示,假设源文件块S1和目标文件块D1内容一致,源文件块S4和目标文件块D3内容一致,则如图8所示将文件校验码列表中源文件块S1和S4的源文件块ID和源数据节点ID分别替换为目标文件块D1和D3的目标文件块ID和目标数据节点ID。
本较佳实施例中,当存在与源文件块校验码相同的目标文件块,则与该源文件块序号相同的目标文件块的写入数据从与该源文件块内容相同的目标文件块获取。按照步骤S206进行替换操作后,图8所示的文件块列表中源文件块和源数据节点并不再是指源文件系统中的文 件块和数据节点,而是指在数据备份过程中的数据发送方,目标数据节点表示的是数据接收方即为目标文件系统的数据节点。需要指出,图8所示的文件校验码列表是一个源文件块的各源文件块和对应目标文件块之间的数据传输策略,反映了源文件备份过程中数据传输的相关信息,例如:作为数据发送和接收方的源和目标数据节点ID、作为数据来源的源文件块ID和作为数据写入的目标位置的目标文件块ID以及验证写入数据完整性的源文件块的校验码。
需要指出的是,步骤S206中当替换文件校验码列表中的源文件块ID和源数据节点ID之前,将要被替换的源文件块ID、源数据节点ID和源文件块的序号保存至图9所示的源文件块备份表中。如图9所示,该源文件块备份表包括源文件块的序号、源文件块ID和源数据节点。
步骤S207,判定是否为源文件的最后一个文件块,若是,则进入步骤S208,否则返回步骤S202,继续下一个源文件块与所有目标文件块的内容一致性的判定。
步骤S208,遍历文件校验码列表,删除源和目标文件块ID相同且源和目标数据节点ID相同的行记录。
具体来说,经步骤S206的替换操作,若同一行中相同文件块序号的源和目标文件块的ID相同且源和目标数据节点的ID相同,则该行源和目标文件块的内容一致且为同一个文件块,故源文件中该文件块序号的源文件块无需备份,目标文件块无需重新写入,删除该行记录。
如图7所示,假设源文件块S1和目标文件块D1内容一致,则如图8所示,将文件校验码列表中源文件块S1的源文件块ID和源数据节点ID替换为目标文件块D1的目标文件块ID和目标数据节点ID,此时,文件块序号1的源文件块和目标文件块的ID相同且源和目标数节点ID相同,表明文件块序号为1的该行记录中,数据发送方的源文件块和接收方的目标文件块为同一个数据节点的同一个文件块,则源文件中序号为1的文件块内容与目标文件中对应的序号为1的文件块 内容一致,无需备份,如图8示删除该行。
步骤S209,同步控制节点根据源数据节点ID,将文件校验码列表中的各行分别发送至相应的源数据节点。
具体来说,同步控制节点参照文件校验码列表中的源数据节点ID,将各行记录分别发送至作为数据发送方的源数据节点,各源数据节点根据接收的行记录对相应源文件块进行备份。结合图1和图8所示,同步控制节点将文件校验码列表中文件块序号为2和4的行记录分别发送至作为数据发送方的源数据节点s-b以及d-a,其中,作为数据发送方的源数据节点s-b、d-a分别是源和目标文件系统中的数据节点。
如图7和图8所示,目标文件块D3和源文件块S4的内容一致,故,将目标文件块D3的内容发送至源文件块S4对应的用以备份的目标文件块D4,需要特别注意,目标文件块D4必须先于目标文件块D3被备份。假设,目标文件块D3先被重新写入源文件块S3的内容,而再根据目标文件块D3的内容写入D4,此时,因目标文件块D3的内容不再与源文件块S4一致,引起目标文件块D4备份数据错误。
鉴于上述情形,当某些目标文件块既作为文件校验码列表中的目标文件块ID同时也作为源文件块ID时,同步控制节点分析文件校验码列表中目标文件块之间的相关性和依赖关系,按照一定的顺序发送文件校验码列表中的各行记录,使得作为数据发送方的源文件块ID为目标文件块的行记录先被发送,待该行记录中数据接收方的目标文件块被成功备份后,再发送目标文件块ID为上述作为数据发送方的目标文件块的行记录至相应的源数据节点。
以下结合图9~图11详细说明步骤S209如何具体分析文件校验码列表中目标文件块之间的相关性和依赖关系,并根据一定的顺序发送各行记录:
a)根据源文件块备份表的序号从文件校验码列表中依次筛选出源数据节点ID为目标文件系统的数据节点的行记录,参照图9,筛选出 图8所示的文件校验码列表中源文件块序号为4的行记录;
b)根据筛选出各行记录的序号依次创建有向边,构造一个有相无环图,其中,通过以下步骤构造有相无环图:
以各行记录中源数据节点ID和目标数据节点ID为顶点,由源数据节点至目标数据节点的数据传输为一条有向边,如图10所示的有相无环图中,图8所示源文件块序号为4的行记录创建有向边,以源数据节点ID d-a和目标数据节点ID d-b作为顶点,两顶点连线的边的方向为由源数据节点ID的顶点d-a至目标数据节点ID d-b;
当根据筛选行记录创建的有向边使得该有相无环图构成环路,则根据该文件校验码列表行记录中的源文件块序号将该文件校验码列表行记录中的位于目标文件系统的源数据节点ID和源数据节点ID替换为源文件块备份表中相同源文件块序号的位于源文件系统的相应源文件块ID和源数据节点ID,并删除源文件块备份表中与文件校验码列表行记录的源文件块序号相同的行,如图10所示,当顶点d-g至顶点d-a的有向边使有相无环图构成环路,则不添加该有向边至有相无环图中;
c)选取有相无环图中出度为零的顶点所在的边,发送所选取的边对应的行记录并于有相无环图中删除选取的边,迭代执行步骤c,重新选取出度为零的边,发送相应的行记录并删除边,直至有相无环图为空,如图10,出度为零的顶点d-d、d-g、d-e所在的边分别为顶点d-c到顶点d-d,顶点d-d至顶点d-g,顶点d-f到顶点d-e,则发送所选取的边对应的行记录,如图11,删除上述出度为零的各边,再重新选取出度为零的顶点所在的边,迭代执行,直至该有相无环图为空;
d)依次发送源文件块序号不存在于源文件块备份列表中的其余各行记录即文件校验码列表中源数据节点ID不位于目标文件系统的数据节点的各行记录,包括未被筛选出的行记录以及被筛选出且被重新替换为源文件系统的源文件块ID和源数据节点ID的行记录。
综上,步骤S02主要是将源文件中的各文件块分别与目标文件的 所有文件块的哈希值和校验码进行比较以判定文件块内容一致性,根据判定结果替换文件校验码列表的源文件块ID和源数据节点ID,剔除源文件中无需备份的文件块,将文件校验码列表各行发送至作为数据发送方的源数据节点。
需特别指出,本较佳实施例中,步骤S01(含步骤S101~S105)以及步骤S02关于源和目标文件块内容一致性判定的说明中(含步骤S201~S208)“源数据节点、源文件、源文件块、源文件块和源chunk”是指位于源文件系统中的数据节点、文件、文件块和chunk,后续步骤S03~S04以及步骤S02关于发送文件校验码列表的各行记录(含步骤S209)中的“源数据节点、源文件、源文件块、源文件块和源chunk”则是指作为数据发送方的数据节点、文件、文件块和chunk,不仅限于源文件系统该物理存储位置还可能是位于目标文件系统。
步骤S03,源数据节点接收相应的文件校验码列表的行记录,切分源文件块为多个chunk并计算各chunk的校验码和哈希值,从目标数据节点获取目标文件块的文件块校验码列表,计算目标chunk的哈希值,通过比较源chunk和目标chunk的哈希值和校验码以判定源和目标chunk的内容一致性,依据判定结果产生文件块差异表,发送该文件块差异表至相应的目标数据节点。
本较佳实施例中,文件校验码列表反映一个源文件在备份过程中各源文件块与对应目标文件块的数据传输策略,每行记录对应一个源文件块备份的数据传输策略。在上述步骤S02中,同步控制节点根据各行记录中作为数据发送方的源数据节点ID,将该文件校验码列表的各行记录分别发送至相应的源数据节点,各源数据节点接收相应的行记录并创建线程执行各源文件块的数据备份作业,即一个源文件的备份是以文件块为单位,并行执行于一组源数据节点中。
HDFS中文件块为最基本的数据存储单位,而为了进一步分析源和目标文件块中是否存在相同的内容,本较佳实施例中,根据大小将源 和目标文件块分别平均分为若干个有序的相同大小的chunk,依次比较每个源chunk和所有目标chunk的内容一致性,当存在目标chunk与某源chunk内容一致,则目标数据节点直接内部磁盘读取该目标chunk的数据写入与该源chunk对应的目标chunk中,减少跨集群或集群内的数据节点间的数据传输。所述的chunk是指一个文件块按大小进行256等分后的基本单位,是一个虚拟的逻辑上的文件块的最小存储单元。
具体来说,本较佳实施例中,分别将源文件块中的每个chunk与目标文件块中的各chunk比较,判定内容一致性,当存在目标chunk与某源chunk的内容一致,则与该源chunk的序号相同的目标chunk的数据有两种写入方式:从与该源chunk内容一致的目标chunk中读入数据并写入;源数据节点发送该源chunk给序号相同的目标chunk的文件块所在的目标数据节点后写入,无论作为数据发送方的源数据节点是源文件系统还是目标文件系统中的数据节点,基于单一节点内部磁盘读写速度远快于不同节点之间的网络传输速度,故,当源和某目标chunk内容一致,选择前者的方式进行数据传输。
以下结合图5所示步骤S03的细化流程图,详细说明上述步骤S03。
步骤S301,源数据节点接收文件校验码列表的行记录,向目标数据节点发送目标文件块校验码列表请求以获取目标文件块包含的各chunk以及各chunk的校验码,并将源文件块划分为多个有序chunk,计算各chunk的校验码,并根据哈希函数计算各chunk的校验码的哈希值(简称“chunk的哈希值”)。
具体来说,作为数据发送方的源数据节点接收文件校验码列表的行记录,首先,根据行记录中的目标文件块ID和目标数据节点ID,向目标数据节点发送接收的文件校验码列表的行记录以及目标文件块校验码列表请求以获取目标文件块包含的各chunk及chunk校验码;然后,源数据节点将该行记录中的源文件块根据大小平分为256个chunk,根据MD5算法计算各chunk的校验码;最后,根据对校验码除以128取 余数的哈希函数计算各chunk的校验码的哈希值。所述MD5算法(Message Digest Algorithm5即MD5,消息摘要算法第五版)是计算机安全领域的一种散列函数,用于提供消息的完整性保护,是将任意长度的字节串经运算后输出32位的十六进制数字串。在其他实施例中,还可以使用sha-1、RIPEMD或Haval等算法计算chunk的校验码。
步骤S302,目标数据节点接收行记录和目标文件块校验码列表请求,将目标文件块划分多个有序chunk并计算各chunk的校验码,生成目标文件块校验码列表返回给源数据节点。
具体来说,目标数据节点接收目标文件块校验码列表请求,将目标文件块平分为256个有序的chunk并根据MD5算法计算各chunk的校验码,生成如图13所示的目标文件块校验码列表。该目标文件块校验码列表包括:目标文件块的各chunk的序号、目标chunk的ID和目标chunk的校验码,其中,chunk的序号反映了各文件块在源文件的读写顺序,chunk的ID为0~255的整数用以表示各chunk在文件块中的顺序,通过该chunk ID可唯一确定文件块中的任一chunk,chunk的校验码为经过MD5算法输出的32位的十六进制数字串,用以验证chunk的数据完整性。需要指出,步骤S301中源数据节点也将源文件块的各chunk的ID和校验码存储于与图13类似的表中。
步骤S303,源数据节点根据相同的哈希函数计算各目标chunk的校验码的哈希值,并创建源文件块的文件块差异表。
具体来说,源数据节点接收目标文件块校验码列表,以相同的哈希函数对各目标chunk的校验码除以128取余数计算各目标chunk的哈希值,将各目标chunk的哈希值保存于图14所示的目标chunk的哈希表中,并创建如图15所示的文件块差异表。如图14所示的目标chunk的哈希表包括哈希值、目标chunk ID和目标chunk校验码,其中,哈希值的范围为0~127的整数,每个哈希值可能对应多个不同的目标chunk的校验码。如图15所示的文件块差异表,包括chunk的序号、 源chunk ID和差异信息。
步骤S304,源数据节点根据接收的文件校验码列表的行记录判定目标文件块是否为新创建的文件块,若是,则进入步骤S312,否则进入步骤S305开始判定各源和目标chunk的内容一致性。
具体来说,文件校验码列表中的Flag为目标文件块是否为新创建文件块的标记位,当Flag为1则为目标数据节点在数据备份前已有的文件块,Flag为0则为同步源和目标文件时目标数据节点创建的文件块。当目标文件块为新创建的文件块时该文件块内容为空,无需比较各源和目标chunk的内容一致性,按照各chunk的序号依次将源文件块的各chunk写入到文件块差异表中的差异信息中,具体参见步骤S312。
需要指出,判定源和目标chunk内容一致性的方法与判定源和目标文件块的内容一致性的方法类似,具体来说,分别比较每个源chunk和所有目标chunk的哈希值,当哈希值不同则源和目标chunk内容不同,当哈希值相同则进一步比较源和目标chunk的校验码,当目标chunk与源chunk的校验码相同则源和目标chunk内容一致,否则源和目标chunk内容不同,关于源和目标chunk内容一致性的判定过程具体参见下述步骤S305~S308。
步骤S305,每个源chunk的哈希值分别与所有目标chunk的哈希值进行比较。
步骤S306,判定是否存在与源chunk的哈希值相同的目标chunk,若存在则进入步骤S307,否则进入步骤S310。
步骤S307,比较源chunk的校验码和与源chunk的哈希值相同的目标chunk的校验码。
步骤S308,判定在于源chunk的哈希值相同的目标chunk中,是否存在与源chunk的校验码相同的目标chunk,若存在则进入步骤S309,否则进入步骤S310。
步骤S309,修改文件块差异表中的源chunk ID为该目标chunk ID。
具体来说,当存在目标chunk与源chunk的哈希值和校验码都相同即源chunk和目标文件块中的某目标chunk内容一致,则修改文件块差异表中该源chunk的ID为与该源chunk内容一致的目标chunk的ID。
步骤S310,将源chunk的内容写入到文件差异表的差异信息中,并将该源chunk ID修改为NULL。
当不存在目标chunk与源chunk内容一致,则源数据节点将该源chunk的内容直接写入到文件差异表中该源chunk的序号对应的差异信息中,并将该源chunk ID修改为NULL,表示该源chunk的内容从差异信息读取,而不是由目标文件块的某个目标chunk读取。
步骤S311,判定是否为最后一个源chunk,若是,则进入步骤S313,否则返回步骤S305,继续判定下一个源chunk是否存在内容一致的目标chunk。
步骤S312,当目标文件块为新创建的文件块时,依照各源chunk的序号将源文件中各chunk的内容写入到文件差异表中的差异信息中并将各源chunk ID修改为NULL。
步骤S313,源数据节点发送该文件差异表给相应的目标数据节点。
具体来说,源数据节点根据接收的文件校验码列表的行记录中的目标数据节点的ID,将上述文件块差异表发送给相应的目标数据节点。
综上,步骤S03主要是计算源和目标文件块的各chunk的校验码和哈希值,通过依次比较每个源chunk和所有目标chunk的哈希值和校验码,判定源和目标chunk的内容一致性,根据判定结果产生文件块差异表并发送至相应的目标数据节点。
步骤S04,目标数据节点创建临时文件块,根据接收的文件块差异表写入数据至该临时文件块,并以临时文件块的内容替换目标文件块。
以下结合图6所示步骤S04的细化流程图,详细说明上述步骤S04。
步骤S401,目标数据节点接收源数据节点发送的文件块差异表并创建一个大小与目标文件块大小相同的临时文件块。
步骤S402,遍历该文件块差异表,依文件块差异表中的chunk的序号依次判定各源chunk ID是否为NULL(空值),若源chunk ID为NULL,则进入步骤S403,否则进入步骤S404。
步骤S403,获取目标文件块中chunk ID与该源chunk ID相同的目标chunk的内容,并写入该临时文件块。
步骤S404,获取文件块差异表中该源chunk ID对应的差异信息,并写入该临时文件块。
步骤S405,判定是否为最后一个源chunk ID,若是,则进入步骤S406,否则返回步骤S402,依chunk序号判定下一个源chunk ID是否为空。
步骤S406,以该临时文件块的内容替换目标文件块的内容,完成源文件块的备份。
综上,步骤S04主要是创建一个临时文件块,根据文件块差异表写入数据至该临时文件块并最终以该临时文件块的内容替换目标文件块的内容,完成源文件块的复制。
最后需要说明的是,以上较佳实施例仅用于说明本发明的技术方案而非限制,尽管按照上述较佳实施例对本发明进行详细说明,本领域的普通技术人员应当理解,可以对本发明技术方案进行替换或等同修改,都不应脱离本发明技术方案的精神和保护范围。

分布式文件系统的数据备份方法.pdf_第1页
第1页 / 共26页
分布式文件系统的数据备份方法.pdf_第2页
第2页 / 共26页
分布式文件系统的数据备份方法.pdf_第3页
第3页 / 共26页
点击查看更多>>
资源描述

《分布式文件系统的数据备份方法.pdf》由会员分享,可在线阅读,更多相关《分布式文件系统的数据备份方法.pdf(26页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103761162 A (43)申请公布日 2014.04.30 CN 103761162 A (21)申请号 201410013486.2 (22)申请日 2014.01.11 G06F 11/14(2006.01) G06F 17/30(2006.01) (71)申请人 深圳清华大学研究院 地址 518057 广东省深圳市南山区高新技术 产业园南区深圳清华大学研究院大楼 A302 室 (72)发明人 武永卫 陈康 郑纬民 李贞强 (74)专利代理机构 深圳市鼎言知识产权代理有 限公司 44311 代理人 孔丽霞 (54) 发明名称 分布式文件系统的数据备份方法 (。

2、57) 摘要 本发明提供一种分布式文件系统的数据备份 方法, 该方法包括 : 同步控制节点创建线程池, 根 据拷贝列表为各线程分配源文件, 并行进行各源 文件和对应目标文件的元数据同步 ; 同步控制节 点的各线程通过判定源和目标文件中的各文件块 的内容一致性, 分析各自分配的源文件和对应目 标文件的差异 ; 源数据节点通过判定源和目标文 件块中各 chunk 的内容一致性, 分析源和目标文 件块的差异 ; 目标数据节点根据源和目标文件块 的差异分析结果, 备份源文件块的数据至对应目 标文件块。该方法有效利用目标文件系统的目标 文件的已有数据, 减少跨集群的数据节点间的数 据传输, 且一个文件的。

3、备份过程中以文件块为单 位并行备份, 减少了数据备份的执行时间。 (51)Int.Cl. 权利要求书 4 页 说明书 12 页 附图 9 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书12页 附图9页 (10)申请公布号 CN 103761162 A CN 103761162 A 1/4 页 2 1. 一种分布式文件系统的数据备份方法, 应用于两个集群的 HDFS 文件系统, 其特征在 于, 该方法包括 : 元数据同步步骤 : 同步控制节点根据客户端输入的数据备份命令中的源路径获取拷 贝列表, 同步该拷贝列表中所有源和目标文件的元数据, 并生成各源文件的。

4、文件校验码列 表 ; 文件差异分析步骤 : 同步控制节点将源文件的每个文件块的校验码与目标文件的各文 件块的校验码进行比较, 判定源和目标文件中各文件块的内容一致性, 根据判定结果替换 文件校验码列表中的源文件块和源数据节点, 并将文件校验码列表的各行记录发送至相应 的源数据节点 ; 文件块差异分析步骤 : 源数据节点接收文件校验码列表的行记录, 将该行记录中的源 文件块的每个 chunk 的校验码与目标文件块的各 chunk 的校验码进行比较, 判定源和目标 文件块中各 chunk 的内容一致性, 根据判定结果生成文件块差异表, 并将该文件块差异表 和接收的文件校验码列表的行记录发送给对应的。

5、目标数据节点 ; 及 数据备份步骤 : 目标数据节点创建临时文件块, 根据接收的文件块差异表写入数据至 该临时文件块, 以临时文件块的内容替换目标文件块的内容。 2. 如权利要求 1 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的元数据 同步步骤包括 : a) 同步控制节点根据客户端输入的源路径从源文件系统的元数据节点获取拷贝列表, 创建线程池并根据该拷贝列表为每个线程分配源文件, 该拷贝列表为源路径下的所有源文 件的列表, 包括各源文件的文件名、 大小以及文件路径 ; b) 同步控制节点的各线程从源文件系统的元数据节点获取各线程被分配的源文件的 元数据, 根据源文件的元数据从相应。

6、的源数据节点中分别获取源文件包含的各文件块的校 验码 ; c) 同步控制节点的各线程从目标文件系统的元数据节点获取各源文件对应的目标文 件的元数据, 比较源和目标文件的大小, 根据比较结果, 向目标文件系统的元数据节点申请 创建或删除目标文件的文件块, 使得目标文件大小与源文件一致 ; d) 同步控制节点的各线程从目标文件系统的元数据节点重新获取各目标文件的元数 据, 根据各目标文件的元数据从相应的目标数据节点获取各目标文件包含的所有文件块的 校验码 ; e) 同步控制节点的各线程根据各自的源和目标文件的元数据以及所有源和目标文件 块的校验码生成文件校验码列表, 该文件校验码列表包括 : 文件。

7、块的序号、 源文件块 ID、 源 文件块校验码、 源数据节点 ID 和目标文件块 ID、 目标文件块校验码、 目标数据节点 ID 以及 目标文件块是否为新创建文件块的标记位 Flag。 3. 如权利要求 1 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的文件差 异分析步骤包括 : a) 依次将源文件的每个文件块的校验码分别与目标文件的所有目标文件块的校验码 进行比较, 判定源和目标文件块的内容一致性 ; b) 当存在与源文件块内容相同的目标文件块, 则将文件校验码列表中该源文件块的序 号对应的源文件块ID和源数据节点ID分别替换为与该源文件块校验码相同的目标文件块 权 利 要 求 。

8、书 CN 103761162 A 2 2/4 页 3 的文件块 ID 和目标数据节点 ID, 当不存在与源文件块内容相同的目标文件块时, 则返回步 骤 a 继续下一个源文件块的比较 ; c) 判定是否为最后一个源文件块, 若是, 则进入步骤 d, 否则返回步骤 a 继续下一个源 文件块的比较 ; d) 遍历文件校验码列表, 删除源和目标文件块 ID 相同且源和目标数据节点 ID 相同的 行记录 ; e) 根据源数据节点 ID, 将文件校验码列表的各行记录分别发送至相应的源数据节点。 4. 如权利要求 1 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的文件块 差异分析步骤包括 : a。

9、) 源数据节点接收文件校验码列表的行记录, 向目标数据节点发送该行记录和目标文 件块校验码列表请求以获取目标文件块包含的各 chunk 和各 chunk 的校验码 ; b) 源数据节点将行记录中的源文件块等分为多个相同大小的有序 chunk, 根据摘要算 法计算各 chunk 的校验码 ; c) 目标数据节点接收行记录和目标文件块校验码列表请求, 将目标文件块等分为多个 相同大小的有序chunk并计算各chunk的校验码, 生成目标文件块校验码列表, 返回给源数 据节点, 该目标文件块校验码列表包括 : 目标文件块中各chunk的序号、 目标chunk ID和目 标 chunk 的校验码 ; 。

10、d) 源数据节点接收目标文件块校验码列表, 并创建源文件块的文件块差异表, 该文件 块差异表包括 : 源文件块中各 chunk 的序号、 源 chunk ID 和差异信息 ; e) 源数据节点依次将源文件块的每个 chunk 的校验码分别与目标文件块的所有目标 chunk 的校验码进行比较, 判定源和目标 chunk 的内容一致性 ; f) 当存在与源 chunk 的内容相同的目标 chunk, 修改文件块差异表中该源 chunk 的 ID 为该目标 chunk 的 ID ; g) 当不存在与源 chunk 的内容相同的目标 chunk, 修改文件块差异表中该源 chunk 的 ID 为 NU。

11、LL 并将该源 chunk 的内容写入差异信息 ; h) 判定是否为最后一个源 chunk, 若是, 则进入步骤 i, 否则返回步骤 e 继续下一个源 chunk 的比较 ; i) 源数据节点发送该文件块差异表给相应的目标数据节点。 5. 如权利要求 1 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的数据备 份步骤包括 : a) 目标数据节点接收源数据节点发送的文件块差异表并创建一个大小与目标文件块 大小相同的临时文件块 ; b) 遍历该文件块差异表, 依次判定各源 chunk ID 是否为空值 ; c) 当源 chunk ID 为空值, 则获取目标文件中的 chunk ID 与该。

12、源 chunk ID 相同的目 标 chunk 的内容写入该临时文件块 ; 当源 chunk ID 不为空值, 则获取文件块差异表中该源 chunk ID 对应的差异信息写入该临时文件块 ; d) 判定是否为最后一个源 chunk, 若是则进入步骤 e, 否则返回步骤 b 继续下一个源 chunk 的比较 ; e) 以该临时文件块的内容替换目标文件块的内容, 目标数据节点完成对源文件块的备 权 利 要 求 书 CN 103761162 A 3 3/4 页 4 份。 6. 如权利要求 3 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的文件差 异分析步骤中的步骤 a 通过以下步骤判定源。

13、和目标文件块的内容一致性 : a1) 根据相同的哈希函数计算源和目标文件所包含的各文件块的校验码的哈希值 ; a2) 依次将每个源文件块的哈希值分别与目标文件包含的所有目标文件块的哈希值进 行比较 ; a3) 当不存在与源文件块的哈希值相同的目标文件块, 则不存在于源文件块内容相同 的目标文件块 ; a4) 当存在与源文件块的哈希值相同的目标文件块, 则比较该源文件块的校验码和与 该源文件块哈希值相同的目标文件块的校验码 ; a5) 当与源文件块哈希值相同的目标文件块中存在与源文件块的校验码相同的目标文 件块, 则存在与源文件块相同的目标文件块。 7. 如权利要求 4 所述的分布式文件系统的数。

14、据备份方法, 其特征在于, 所述的文件块 差异分析步骤中的步骤 e 之前还包括以下步骤 : 源数据节点根据接收的文件校验码列表的行记录中的标记位 Flag 判定目标文件块是 否为新创建的文件块 ; 当目标文件块为已有的文件块, 跳转至该步骤 e 判定源和目标文件块所包含的各 chunk 的内容一致性 ; 当目标文件块为新创建的文件块, 则依照各源 chunk 的序号将源文件中各 chunk 的内 容写入到文件差异表中的差异信息中并将各源 chunk ID 修改为 NULL, 跳转至步骤 i, 将该 文件块差异表发送至相应的目标数据节点。 8. 如权利要求 4 所述的分布式文件系统的数据备份方法。

15、, 其特征在于, 所述的文件块 差异分析步骤中的步骤 e 通过以下步骤判定源和目标 chunk 的内容一致性 : e1) 根据相同的哈希函数计算源和目标文件块所包含的各 chunk 的校验码的哈希值 ; e2) 依次将每个源 chunk 的哈希值分别与目标文件块包含的所有目标 chunk 的哈希值 进行比较 ; e3) 当不存在与源chunk的哈希值相同的目标文件块, 则不存在与源chunk内容相同的 目标 chunk ; e4) 当存在与源 chunk 的哈希值相同的目标 chunk, 则比较该源 chunk 的校验码和与该 源 chunk 哈希值相同的目标 chunk 的校验码 ; e5)。

16、 当与源 chunk 哈希值相同的目标 chunk 中存在与源 chunk 的校验码相同的目标 chunk, 则存在与源 chunk 相同的目标 chunk。 9. 如权利要求 3 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的文件差 异分析步骤中, 当存在与源文件块内容相同的目标文件块, 在执行步骤 b 的替换操作之前, 还包括步骤 : 将被替换的源文件块 ID、 源数据节点 ID 和源文件块的序号保存至源文件块备份表中, 该源文件块备份表包括源文件块的序号、 源文件块 ID 和源数据节点。 10. 如权利要求 9 所述的分布式文件系统的数据备份方法, 其特征在于, 所述的文件差。

17、 异分析步骤中, 步骤 e 通过以下步骤发送文件校验码列表的各行记录 : 权 利 要 求 书 CN 103761162 A 4 4/4 页 5 e1) 根据源文件块备份表的序号从文件校验码列表中依次筛选出源数据节点 ID 为目 标文件系统的数据节点的行记录 ; e2) 根据筛选出各行记录的序号依次创建有向边, 构造一个有相无环图, 其中, 通过以 下步骤构造有相无环图 : 以各行记录中源数据节点 ID 和目标数据节点 ID 为顶点, 由源数据节点至目标数据节 点的数据传输为一条有向边 ; 当根据筛选行记录创建的有向边使得该有相无环图构成环路, 则根据该文件校验码列 表行记录中的源文件块序号将该。

18、文件校验码列表行记录中的位于目标文件系统的源数据 节点ID和源数据节点ID替换为源文件块备份表中相同源文件块序号的位于源文件系统的 相应源文件块 ID 和源数据节点 ID, 并删除源文件块备份表中与文件校验码列表行记录的 源文件块序号相同的行 ; e3) 选取有相无环图中出度为零的顶点所在的边, 发送所选取的边对应的行记录并于 有相无环图中删除选取的边, 迭代执行步骤 c, 重新选取出度为零的边, 发送相应的行记录 并删除边, 直至有相无环图为空 ; e4) 依次发送源文件块序号不存在于源文件块备份列表中的其余各行记录即文件校验 码列表中源数据节点 ID 不位于目标文件系统的数据节点的各行记录。

19、, 包括未被筛选出的 行记录以及被筛选出且被重新替换为源文件系统的源文件块 ID 和源数据节点 ID 的行记 录。 权 利 要 求 书 CN 103761162 A 5 1/12 页 6 分布式文件系统的数据备份方法 技术领域 0001 本发明涉及分布式文件系统, 具体涉及不同分布式文件系统的集群之间数据备份 的技术或称之为文件同步的技术。 背景技术 0002 HDFS(Hadoop Distributed File System, Hadoop 分布式文件系统) , 是一种采用 Java 语言开发的开源分布式文件系统, 具有高容错性, 适用于超大数据集的应用程序。为 了避免因设备故障、 突发。

20、断电或是自然灾害 (如地震、 海啸等) 而引起数据的丢失, 需要将某 一文件系统 (源文件系统) 中的数据备份或迁移至地理位置相隔较远且相对安全的集群的 另外一个文件系统 (目标文件系统) 中。HDFS 提供一个数据备份命令 distcp(Distribute Copy, 分布式数据复制) , 用于不同集群的文件系统之间进行数据备份, distcp 是一个 MapReduce 作业, 复制的工作由集群中并行运行的 Map 完成。 0003 该复制命令是将每个文件分配一个单一的 Map 进行复制, 是基于文件级的复制, 在数据备份时删除目标文件系统的目标文件重新写入源文件, 即使目标文件中已存在。

21、源文 件的某些文件块内容也会删除后重新写入, 因此, 采用该方法进行数据备份时耗时过长, 容 易导致带宽占用严重, 网络负荷过大。另外, 采用该方法进行数据备份或文件系统迁移时, 若执行过程中发生了异常中断, 此时目标文件系统中已包含了中断前备份成功的大量目标 文件, 而当再次重新开始备份时, 目标文件系统中已成功备份的文件仍被删除后重新写入。 发明内容 0004 鉴于上述内容, 有必要提供一种分布式文件系统的数据备份方法, 能够有效利用 目标文件系统的目标文件的已有数据, 分析源和目标文件系统中源和目标文件的信息, 在 数据备份之前制定数据传输的策略, 减少跨集群的数据节点间的数据传输, 降。

22、低了数据备 份的执行时间。 0005 所述分布式文件系统的数据备份方法, 该方法包括 : 0006 同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表, 同步该 拷贝列表中所有源和目标文件的元数据, 并生成各源文件的文件校验码列表, 其中, 该拷贝 列表为同步控制节点从源文件系统的元数据节点获取的源路径下的所有源文件的列表 ; 0007 同步控制节点将源文件中的每个文件块的校验码与目标文件的各文件块的校验 码进行比较, 判定源和目标文件中各文件块的内容一致性, 根据判定结果更新文件校验码 列表中的源文件块和源数据节点, 并将文件校验码列表的各行记录发送至相应的源数据节 点 ; 00。

23、08 源数据节点接收文件校验码列表的行记录, 将该行记录中的源文件块的每个 chunk 的校验码与目标文件块的各 chunk 的校验码进行比较, 判定源和目标文件块中各 chunk 的内容一致性, 根据判定结果生成文件块差异表, 并将该文件块差异表和接收的文件 校验码列表的行记录发送给对应的目标数据节点 ; 说 明 书 CN 103761162 A 6 2/12 页 7 0009 目标数据节点创建临时文件块, 根据接收的文件块差异表写入数据至该临时文件 块, 以临时文件块的内容替换目标文件块的内容。 0010 相比于现有技术, 本发明所述的分布式文件系统的备份方法, 有效利用目标文件 系统的已。

24、有目标文件的数据, 判定备份过程中的源文件块的数据由源文件系统的数据节点 还是目标文件系统的数据节点发送, 减少跨集群的数据节点间的数据传输, 且在备份时以 文件块为单位并行备份, 减少了数据备份的执行时间。 附图说明 0011 图 1 是本发明所述的分布式文件系统的数据备份方法的较佳实施例的应用环境 图。 0012 图 2 是本发明所述的分布式文件系统的数据备份方法的较佳实施例的总流程图。 0013 图 3 是对图 2 中步骤 S01 进行详细说明的细化流程图。 0014 图 4 是对图 2 中步骤 S02 进行详细说明的细化流程图。 0015 图 5 是对图 2 中步骤 S03 进行详细说。

25、明的细化流程图。 0016 图 6 是对图 2 中步骤 S04 进行详细说明的细化流程图。 0017 图 7 是步骤 S01 创建的文件校验码列表的示意图。 0018 图 8 是执行步骤 S02 后的文件校验码列表的示意图。 0019 图 9 是源文件块备份表的示意图。 0020 图 10 是根据图 8 所示的文件校验码列表中源数据节点 ID 为目标文件系统的数据 节点的所有行记录创建的 DAG 图。 0021 图 11 是同步控制节点根据图 10 发送部分行记录之后的有相无环图。 0022 图 12 是目标文件块的哈希表的示意图。 0023 图 13 是目标文件块校验码列表的示意图。 002。

26、4 图 14 是目标 chunk 的哈希表的示意图。 0025 图 15 是文件块差异表的示意图。 0026 以下具体实施方式将结合上述各附图, 详细说明本发明所述的分布式文件系统的 数据备份方法的实现。 具体实施方式 0027 在结合具体实施方式说明本发明的技术方案之前, 首先对 HDFS 文件系统的相关 概念进行简要介绍。HDFS 文件系统是主从结构, 包括一个元数据节点 (Name Node, 元数据 节点或名字节点) 和若干数据节点 (Data Node) , 允许用户以文件形式存储数据, 每个文件 被分成若干个有序文件块或数据块 (通常为 64MB 大小) , 存放在一组数据节点上。。

27、该元数据 节点作为主服务器提供元数据服务以及客户端对文件的访问操作等, 该数据节点用于管理 存储的数据。 此外, 本发明所述的数据备份方法为了加快数据备份过程中文件传输速度, 引 入了 chunk 的概念。所述 chunk 是指将一个文件块按大小等分为若干数量 (默认为 256 个) 的文件块的基本单位, 称为文件片, 是一个虚拟的逻辑上的文件块的最小存储单元。 0028 本发明所述的分布式文件系统的数据备份方法 (以下简称 “数据备份方法” ) 用于 两个不同集群的HDFS文件系统之间进行数据备份, 提供一个类似distcp的数据备份命令, 说 明 书 CN 103761162 A 7 3/。

28、12 页 8 该数据备份命令的参数包括源和目标文件系统的路径, 用于将源路径下的目录和文件复制 到目标路径。 0029 为了方便说明, 本较佳实施例中, 将源和目标文件系统中的文件分别称为源文件 和目标文件 (简称 “源和目标文件” ) , 源和目标文件系统的数据节点分别称为源数据节点和 目标数据节点 (简称 “源和目标数据节点” ) , 源和目标文件所包含的文件块分别称为源文件 块和目标文件块 (简称 “源和目标文件块” ) , 源和目标文件块所包含的 chunk 分别称为源 chunk 和目标 chunk(简称 “源和目标 chunk” ) 。 0030 以上通过使用 “源” 和 “目标”。

29、 以对数据备份的两个物理位置以及存储独立的文件 系统中的节点、 文件、 文件块以及 chunk 进行区分, 但是需要特别指出的是, 在本较佳实施 例中, 源数据节点、 源文件、 源文件块以及源 chunk 除了字面上所表示的区别于目标文件系 统而是位于源文件系统中的节点、 文件、 文件块以及 chunk 的含义之外, 在某些情形下还有 另外的含义, 是指数据备份过程中作为数据发送方的节点、 文件、 文件块以及 chunk, 而此时 数据发送方并不仅限于源文件系统, 因为按照本发明所述的数据备份方法, 在数据备份过 程中, 源文件系统中的某些文件的文件块的内容并非由该文件块所在的数据节点发送给进。

30、 行备份的目标数据节点, 而是由目标文件系统中某些内容一致的目标文件块所在的数据节 点发送给进行备份的目标数据节点。在下述说明中将会对 “源数据节点、 源文件、 源文件块 以及源 chunk” 作为 “数据发送方的节点、 文件、 文件块以及 chunk” 的含义进行理解的情形 和原因具体阐述。 0031 参阅图 1 所示, 是所述数据备份方法的较佳实施例的应用环境图。 0032 如图 1 所示, 客户端提供一个用户界面供用户对源文件系统的文件或目录进行各 种操作, 例如 : 创建、 移动、 删除或备份等。源和目标文件系统是两个不同集群的 HDFS 文件 系统, 其中, 该源文件系统包括元数据节。

31、点s以及多个数据节点s-a至s-d, 该目标文件系统 包括元数据节点 d 以及多个数据节点 d-a 至 d-d, 实际应用中, 源和目标文件系统的数据节 点个数因集群建制而异。 同步控制节点用于协调源和目标文件系统的元数据节点之间的通 信, 控制源和目标文件系统元数据的同步并传输数据传输策略给源和目标文件系统的数据 节点, 数据节点之间进行文件块传输, 实现数据备份。本较佳实施例中, 为了区别源和目标 文件系统中元数据节点和数据节点的工作, 该同步控制节点是独立的一个机器节点, 在其 他实施例中, 该同步控制节点还可以是源文件系统或目标文件系统中的元数据节点或数据 节点担当。图 1 中各节点间。

32、通信及数据传输过程在以下各流程图的说明中具体阐述。 0033 参阅图 2 所示, 是所述数据备份方法的较佳实施例的总流程图。 0034 如图 2 所示, 本发明所述的数据备份方法实现源和目标文件系统的数据备份的过 程为 : 首先, 如步骤 S01 所述, 同步控制节点同步源和目标文件系统中文件的元数据, 具体 来说, 同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表, 同步该拷 贝列表中所有源和目标文件的元数据, 并生成各源文件的文件校验码列表, 详细步骤参见 图 3 所示的流程图 ; 其次, 如步骤 S02 所述, 同步控制节点通过判定源和目标文件中的各文 件块的内容一致性, 。

33、分析源和目标文件的差异, 具体来说, 同步控制节点将源文件的每个文 件块的校验码与目标文件的各文件块的校验码进行比较, 判定源和目标文件中各文件块的 内容一致性, 根据判定结果替换文件校验码列表中的源文件块和源数据节点, 并将文件校 验码列表的各行记录发送至相应的源数据节点, 详细步骤参见图 4 所示的流程图 ; 然后, 如 说 明 书 CN 103761162 A 8 4/12 页 9 步骤S03所述, 源数据节点通过判定源和目标文件块中各chunk的内容一致性, 分析源和目 标文件块的差异, 具体来说, 源数据节点接收文件校验码列表的行记录, 将该行记录中的源 文件块的每个 chunk 的。

34、校验码与目标文件块的各 chunk 的校验码进行比较, 判定源和目标 文件块中各 chunk 的内容一致性, 根据判定结果生成文件块差异表, 并将该文件块差异表 和接收的文件校验码列表的行记录发送给对应的目标数据节点, 详细步骤参见图 5 所示的 流程图 ; 最后, 如步骤 S04 所述, 目标数据节点根据源和目标文件块的差异分析结果, 备份 源文件块的数据至对应目标文件块, 具体来说, 目标数据节点创建临时文件块, 根据接收的 文件块差异表写入数据至该临时文件块, 以该临时文件块的内容替换目标文件块的内容, 完成了对源文件块的备份, 详细步骤参见图 6 所示的流程图。综上, 本发明所述的数据。

35、备份 方法在数据备份过程中并行执行多个源文件的备份, 其中, 备份一个源文件时以文件块为 单位并行执行多个源文件块的备份, 相较于现有数据备份方法, 有效改善了数据备份耗时 过长的问题, 同时, 在备份时比较源和目标文件的内容, 尽量减少备份过程中出现跨集群的 数据节点间数据传输的情形, 降低网络带宽占用。 0035 以下将结合图 3 至图 6 的细化流程图对图 2 各步骤进行详细说明。 0036 步骤 S01, 同步控制节点同步源和目标文件系统中文件的元数据, 具体来说, 同步 控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表, 同步该拷贝列表中所 有源和目标文件的元数据, 并生成。

36、各源文件的文件校验码列表。 0037 所述拷贝列表是同步控制节点根据数据备份命令的源路径从源文件系统的元数 据节点获取该源路径下所有源文件的列表。所述元数据 (meta data) 包括文件和目录自身 的属性信息 (例如文件名、 目录名、 文件大小等) 、 文件存储相关信息 (例如文件分块状况、 副 本个数等) 以及 HDFS 中所有数据节点的信息 (例如文件块与数据节点的映射) 。所述源和目 标文件的元数据的同步是指根据拷贝列表依次检查源文件是否在目标文件系统中存在对 应的目标文件以及源文件和目标文件的大小是否一致, 若不存在目标文件则向目标文件系 统的元数据节点申请创建同等大小的文件, 若。

37、源和目标文件大小不一致则创建或删除目标 文件的文件块使得源和目标文件大小一致。 需要说明的是, 本较佳实施例中, 源和目标文件 系统是相同版本的 HDFS 文件系统, 两者创建文件块的大小默认为 64MB, 则同步源和目标文 件的元数据后, 在目标文件系统中存在与源文件相同大小的目标文件, 且源和目标文件的 文件块个数和文件块大小相同。 所述文件校验码列表包括文件块的序号、 源文件块ID、 源文 件块校验码、 源数据节点 ID 和目标文件块 ID、 目标文件块校验码、 目标数据节点 ID 以及目 标文件块是否为新创建文件块的标记位Flag。 所述文件块校验码是用于验证文件块的数据 完整性的一个。

38、 32 位的十六进制数字串, 存储在该文件块的同一个 HDFS 命名空间下的一个 单独的隐藏文件中。 0038 以下结合图 3 所示步骤 S01 的细化流程图, 详细说明上述步骤 S01。 0039 步骤 S101, 同步控制节点根据客户端输入的源路径从源文件系统的元数据节点获 取拷贝列表, 创建线程池, 并根据该拷贝列表为每个线程分配源文件。 0040 该拷贝列表为源路径下的所有需备份的源文件列表, 包括各源文件的文件名、 大 小以及文件路径。 本较佳实施例中, 同步控制节点创建线程池, 根据拷贝列表为线程池中的 各线程分配不同的源文件, 并行进行各源文件与对应目标文件的元数据同步。 004。

39、1 步骤 S102, 同步控制节点的各线程从源文件系统的元数据节点获取各线程被分配 说 明 书 CN 103761162 A 9 5/12 页 10 的源文件的元数据, 根据源文件的元数据从相应的源数据节点中分别获取源文件包含的各 文件块的校验码。 0042 所述的元数据包括有文件大小、 分块状况、 各文件块与数据节点的映射等信息, 本 较佳实施例中, 根据源文件块所在的数据节点的 IP 和端口号, 分别从相应的源数据节点中 获取各源文件块的校验码。 0043 步骤 S103, 同步控制节点的各线程从目标文件系统的元数据节点获取各源文件对 应的目标文件的元数据, 比较源和目标文件的大小, 根据。

40、比较结果, 向目标文件系统的元数 据节点申请创建或删除目标文件的文件块, 使得目标文件大小与源文件一致。 0044 具体来说, 同步控制节点中的线程根据该线程被分配的源文件的文件名以及文件 路径从目标文件系统的元数据节点中获取目标文件的元数据, 比较源和目标文件的大小, 当源文件大小大于目标文件, 则向目标文件系统的元数据节点申请创建新的文件块以使目 标文件与源文件大小一致, 当源文件大小小于目标文件, 则从目标文件最后的文件块开始 删除以使得目标文件与源文件大小一致。 0045 需要说明的是, 当源文件在目标文件系统中不存在相应的目标文件, 即该目标文 件的大小为零, 则向目标文件系统的元数。

41、据节点申请创建与源文件大小一致的目标文件, 创建文件的过程实为文件块的创建, 故本较佳实施例中, 并未预先判定目标文件的存在性, 而直接比较源和目标文件的大小。 0046 步骤 S104, 同步控制节点的各线程从目标文件系统的元数据节点重新获取各目标 文件的元数据, 根据各目标文件的元数据从相应的目标数据节点获取各目标文件包含的所 有文件块的校验码。 0047 具体来说, 经步骤 S103 进行创建或删除目标文件的文件块之后, 目标文件的元数 据有变更, 故步骤 S104 再次获取目标文件的元数据。 0048 步骤 S105, 同步控制节点的各线程根据各自的源和目标文件的元数据以及各源和 目标。

42、文件所包含的文件块的校验码生成文件校验码列表, 该文件校验码列表包括 : 文件块 的序号、 源文件块 ID、 源文件块校验码、 源数据节点 ID 和目标文件块 ID、 目标文件块校验 码、 目标数据节点 ID 以及目标文件块是否为新创建文件块的标记位 Flag。 0049 本较佳实施例中, 源和目标文件系统为相同版本的 HDFS 文件系统, 两个文件系统 的文件块默认为 64MB 大小, 则当源和目标文件大小一致时, 源和目标文件块一一对应, 使 得后续可以以文件块为单位并行的进行源和目标文件块的备份, 相较于现有技术中以文件 为单位并行复制, 提升了数据并行传输速率以及缩短了备份时间。 00。

43、50 需要指出, 同步控制节点分配多个线程并行执行各源文件的备份作业, 则每个线 程各自生成分配的源文件的文件校验码列表。如图 7 所示, 序号为源文件包括的各文件块 的序号, 反映了各文件块在源文件的读写顺序 ; 源和目标文件块 ID 为源和目标文件系统为 各自集群中数据节点的文件块分配的唯一识别文件块的字符串序列 ; 源和目标文件块校验 码为用于验证源和目标文件块的数据完整性的 32 位的十六进制数字串 ; 源和目标数据节 点 ID 为源和目标文件块所在数据节点的 IP 和端口号 (例如 : 10.134.91.70:3800) ; Flag 为 目标文件块是否为新创建文件块的标记位, 当。

44、目标文件块为目标文件已有的文件块则 Flag 标记为 1, 当目标文件块为新创建的文件块则 Flag 标记为 0。 0051 如图 7 所示, 源文件包括 4 个文件块 S1、 S2、 S3、 S4 且分别位于源数据节点 s-a、 说 明 书 CN 103761162 A 10 6/12 页 11 s-b、 s-c 和 s-d, 目标文件包括 4 个文件块 D1、 D2、 D3、 D4 且分别位于目标数据节点 d-b、 d-c、 d-a 和 d-d, 其中, 目标文件块 D4 的 Flag 为 0 即经步骤 S103 创建的文件块, 目标文件 块 D1、 D2、 D3 的 Flag 为 1 即。

45、为该源文件对应的目标文件中已有文件块。由文件校验码列表 可清楚得知源和目标文件块的对应关系和数据传输的发送和接收方的网络配置。 0052 需要说明, 上述步骤 S01 的具体说明中源数据节点、 源文件和源文件块分别是指 位于源文件系统中数据节点、 文件和文件块。 0053 综上, 同步控制节点创建线程池, 根据拷贝列表为每个线程分配源文件, 各线程以 文件为单位并行执行源和目标文件的元数据同步。步骤 S01 主要实现了源和目标文件的元 数据的同步, 保证源文件在目标文件系统中存在相同大小的目标文件, 并根据源和目标文 件的元数据和所包含文件块的校验码生成文件校验码列表。 0054 步骤 S02。

46、, 同步控制节点通过判定源和目标文件中的各文件块的内容一致性, 分析 源和目标文件的差异, 具体来说, 同步控制节点将源文件中的每个文件块的校验码与目标 文件的各文件块的校验码进行比较, 判定源和目标文件中各文件块的内容一致性, 根据判 定结果替换文件校验码列表中的源文件块和源数据节点, 并将文件校验码列表的各行记录 发送至相应的源数据节点。 0055 在实际应用中, 目标文件系统作为源文件系统的备援系统, 当源文件系统中出现 新增文件或是文件内容变更等情形时, 需进行一次数据备份, 以保证目标文件系统的数据 与源文件系统的数据一致。现有的数据备份方法 distcp 命令在备份时, 以文件为单。

47、位将目 标文件删除并由源文件系统的数据节点传输源文件的数据重新写入, 该做法需要大量数据 传输容易引起带宽占用率过高, 网络负载过大。 分析用户更新文件的行为, 源文件相较于目 标文件的变动可能是新增文件块、 修改已有某个文件块内容、 删除某个已有文件块或文件 块顺序的变更等, 可见, 源文件中的大多数据是未变动的, 另外, 大多数情况下, 同一集群内 部数据节点间通信的网络带宽优于跨集群的数据节点间通信的网络带宽, 鉴于此, 本较佳 实施例中, 步骤 S02 以文件块为单位, 比较源和目标文件块的内容的一致性, 判定需要备份 的源文件块并进一步判定该源文件块的数据由源还是目标文件系统的数据节。

48、点发送。 0056 以下结合图4所示步骤S02的细化流程图, 详细说明上述步骤S02, 其中, 同步控制 节点的各线程各自执行下述的步骤 S201 S209, 并行的对各自分配的源文件和对应的目 标文件所包含的文件块进行内容一致性判定, 并根据判定结果替换各自源文件的文件校验 码列表中的源文件块和源数据节点。 0057 步骤 S201, 根据文件校验码列表中源和目标文件块的校验码, 以相同的哈希函数 计算源和目标文件块的校验码的哈希值 (简称 “源和目标文件块的哈希值” ) 。 0058 源和目标文件块的校验码是将文件块的内容经由摘要算法输出的一定长度的 十六进制的数字串, 用于验证数据的完整。

49、性。 在本较佳实施例中, 通过比较源和目标文件块 的校验码来判定源和目标文件块的内容一致性即当源和目标文件块的校验码一致则认定 两文件块的内容是一致的。当源和目标文件块数目较多, 比对 32 位的十六进制校验码的耗 时较长, 为了提高执行效率, 本较佳实施例中, 根据相同的哈希函数计算源和目标文件块的 哈希值, 首先比较哈希值, 当哈希值不同则源和目标文件块内容定然不同, 当哈希值相同则 进一步比较校验码是否相同, 当校验码相同则源和目标文件块内容相同, 上述文件块内容 一致性的判定过程具体参见下述步骤 S202 至 S205。 说 明 书 CN 103761162 A 11 7/12 页 12 0059 本较佳实施例中, 哈希函数采用文件块 32 位校验码除以 128, 取余数作为文件块 的校验码的哈希值 (简称 “文件块的哈希值” ) , 如图 12 所示为目标文件块的哈希表的示意 图, 该目标文件块的哈希表包括目标文件块 ID、 目标文件块校验码以及由哈希函数计算出 的校验码的哈希值, 其中, 由上述哈希函数计算的哈希值的取值范围为 0 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1