《分布式文件系统的数据备份方法.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 。