分布式文件系统的数据备份方法技术方案

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

【技术实现步骤摘要】
分布式文件系统的数据备份方法
本专利技术涉及分布式文件系统,具体涉及不同分布式文件系统的集群之间数据备份的技术或称之为文件同步的技术。
技术介绍
HDFS(HadoopDistributedFileSystem,Hadoop分布式文件系统),是一种采用Java语言开发的开源分布式文件系统,具有高容错性,适用于超大数据集的应用程序。为了避免因设备故障、突发断电或是自然灾害(如地震、海啸等)而引起数据的丢失,需要将某一文件系统(源文件系统)中的数据备份或迁移至地理位置相隔较远且相对安全的集群的另外一个文件系统(目标文件系统)中。HDFS提供一个数据备份命令distcp(DistributeCopy,分布式数据复制),用于不同集群的文件系统之间进行数据备份,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文件系统是主从结构,包括一个元数据节点(NameNode,元数据节点或名字节点)和若干数据节点(DataNode),允许用户以文件形式存储数据,每个文件被分成若干个有序文件块或数据块(通常为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.一种分布式文件系统的数据备份方法,应用于两个集群的HDFS文件系统,其特征在于,该方法包括:元数据同步步骤:同步控制节点根据客户端输入的数据备份命令中的源路径获取拷贝列表,同步该拷贝列表中所有源和目标文件的元数据,并生成各源文件的文件校验码列表;文件差异分析步骤:同步控制节点将源文件的每个文件块的校验码与目标文件的各文件块的校验码进行比较,判定源和目标文件中各文件块的内容一致性,根据判定结果替换文件校验码列表中的源文件块和源数据节点,并将文件校验码列表的各行记录发送至相应的源数据节点;文件块差异分析步骤:源数据节点接收文件校验码列表的行记录,将该行记录中的源文件块的每个chunk的校验码与目标文件块的各chunk的校验码进行比较,判定源和目标文件块中各chunk的内容一致性,根据判定结果生成文件块差异表,并将该文件块差异表和接收的文件校验码列表的行记录发送给对应的目标数据节点;及数据备份步骤:目标数据节点创建临时文件块,根据接收的文件块差异表写入数据至该临时文件块,以临时文件块的内容替换目标文件块的内容;所述的元数据同步步骤包括:a)同步控制节点根据客户端输入的源路径从源文件系统的元数据节点获取拷贝列表,创建线程池并根据该拷贝列表为每个线程分配源文件,该拷贝列表为源路径下的所有源文件的列表,包括各源文件的文件名、大小以及文件路径;b)同步控制节点的各线程从源文件系统的元数据节点获取各线程被分配的源文件的元数据,根据源文件的元数据从相应的源数据节点中分别获取源文件包含的各文件块的校验码;c)同步控制节点的各线程从目标文件系统的元数据节点获取各源文件对应的目标文件的元数据,比较源和目标文件的大小,根据比较结果,向目标文件系统的元数据节点申请创建或删除目标文件的文件块,使得目标文件大小与源文件一致;d)同步控制节点的各线程从目标文件系统的元数据节点重新获取各目标文件的元数据,根据各目标文件的元数据从相应的目标数据节点获取各目标文件包含的所有文件块的校验码;e)同步控制节点的各线程根据各自的源和目标文件的元数据以及所有源和目标文件块的校验码生成文件校验码列表,该文件校验码列表包括:文件块的序号、源文件块ID、源文件块校验码、源数据节点ID和目标文件块ID、目标文件块校验码、目标数据节点ID以及目标文件块是否为新创建文件块的标记位Flag。2.如权利要求1所述的分布式文件系统的数据备份方法,其特征在于,所述的文件差异分析步骤包括:a)依次将源文件的每个文件块的校验码分别与目标文件的所有目标文件块的校验码进行比较,判定源和目标文件块的内容一致性;b)当存在与源文件块内容相同的目标文件块,则将文件校验码列表中该源文件块的序号对应的源文件块ID和源数据节点ID分别替换为与该源文件块校验码相同的目标文件块的文件块ID和目标数据节点ID,当不存在与源文件块内容相同的目标文件块时,则返回步骤a继续下一个源文件块的比较;c)判定是否为最后一个源文件块,若是,则进入步骤d,否则返回步骤a继续下一个源文件块的比较;d)遍历文件校验码列表,删除源和目标文件块ID相同且源和目标数据节点ID相同的行记录;e)根据源数据节点ID,将文件校验码列表的各行记录分别发送至相应的源数据节点。3.如权利要求1所述的分布式文件系统的数据备份方法,其特征在于,所述的文件块差异分析步骤包括:a)源数据节点接收文件校验码列表的行记录,向目标数据节点发送该行记录和目标文件块校验码列表请求以获取目标文件块包含的各chunk和各chunk的校验码;b)源数据节点将行记录中的源文件块等分为多个相同大小的有序chunk,根据摘要算法计算各chunk的校验码;c)目标数据节点接收行记录和目标文件块校验码列表请求,将目标文件块等分为多个相同大小的有序chunk并计算各chunk的校验码,生成目标文件块校验码列表,返回给源数据节点,该目标文件块校验码列表包括:目标文件块中各chunk的序号、目标chunkID和目标chunk的校验码;d)源数据节点接收目标文件块校验码列表,并创建源文件块的文件块差异表,该文件块差异表包括:源文件块中各chunk的序号、源chunkID和差异信息;e)源数据节点依次将源文件块的每个chunk的校验码分别与目标文件块的所有目标chunk的校验码进行比较,判定源和目标chunk的内容一致性;f)当存在与源chunk的内容相同的目标chunk,修改文件块差异表中该源chunk的ID为该目标chunk的ID;g)当不存在与源chunk的内容相同的目标chunk,修改文件块差异表中该源chunk的ID为NULL并将该源chunk的内容写入差异信息;h)判定是否为最后一个源chunk,若是,则进入步骤i,否则返回步骤e继续下一个源chunk的比较;i)源数据节点发送该文件块差异表...

【专利技术属性】
技术研发人员:武永卫陈康郑纬民李贞强
申请(专利权)人:深圳清华大学研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1