一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于HDFS的数据去重方法、系统、设备和存储介质与流程

2021-11-17 23:55:00 来源:中国专利 TAG:

一种基于hdfs的数据去重方法、系统、设备和存储介质
技术领域
1.本发明属于数据去重技术领域,特别涉及一种基于hdfs的数据去重方法、系统、设备和存储介质。


背景技术:

2.hdfs:hadoop distributed file system,hadoop分布式文件系统,hadoop分布式文件系统被设计成适合运行在通用硬件上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。hdfs是一个高度容错性的系统,适合部署在廉价的机器上。hdfs能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。hdfs放宽了一部分posix约束,来实现流式读取文件系统数据的目的。hdfs在最开始是作为apache nutch搜索引擎项目的基础架构而开发的。hdfs是apache hadoop core项目的一部分。hdfs有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。hdfs放宽了posix的要求这样可以实现流的形式访问文件系统中的数据。在大规模生产环境中,存储成本是hdfs集群规模构建的重要指标之一,存储成本直接决定了该集群的存储总量上限。现有技术为了降低存储成本,从数据优化与存储策略角度出发,均做出了诸多努力。在数据优化方面,可利用压缩算法对已有数据进行压缩,缩减文件大小达到降低存储成本的目的。在存储策略角度,将已有三副本策略转换为纠删码策略,在保证文件可用性的前提下大幅缩减冗余文件占用空间,也能达到降低存储成本的目的。但是,上述方法均需改变原有文件结构,并且消耗集群大量cpu资源,对上层应用支持性差。
3.数据去重技术本质上就是删除重复数据,更关注于文件内部的重复,从某种意义上而言也是一种数据压缩技术。而在hdfs场景下,文件是由块组成,可通过比较文件块的异同实现数据去重的目的。在生产环境中hdfs除了存储原始数据外,还存储了大量基于原始数据处理后的多级数据,多级数据存在着大量的重复数据,可通过数据去重技术得以优化。已有hdfs数据去重技术主要通过mapreduce任务将重复数据块信息以数据指纹形式存储在外部数据库中,然后依据数据指纹信息删除重复文件块,利用外部数据库获取重复文件块索引,保证重复块删除后正常读取,但是仍存在以下缺点:数据去重的检查阶段依赖mapreduce类似的外部计算资源,不利于存储内部管理,并且占用计算资源;重复块删除后,块索引由外部数据库维护,将影响数据读取性能;针对已存数据进行处理,当对数据进行增删改时,缺乏合理的处理逻辑与方法。


技术实现要素:

4.为了解决上述技术问题,本发明提出了一种基于hdfs的数据去重方法、系统、设备和存储介质,实现hdfs数据去重服务化,免去外部依赖,可有效降低存储成本。
5.为实现上述目的,本发明采用以下技术方案:
6.一种基于hdfs的数据去重方法,包括以下步骤:
7.计算待去重工作节点下文件块的标识值,将文件全路径与所述标识值组成键值对,然后将所述键值对聚合成第一映射数组并发送至hdfs的命名空间;
8.在所述hdfs的命名空间,二次聚合所述映射数组得到第二映射数组;
9.查询第二映射数组中键值对的标识值在映射表中如果已经存在,获取第二映射数组中键值对对应的块索引信息,根据所述块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
10.进一步的,所述计算待去重工作节点下文件块的标识值的方法为:将任意大小的文件块均生成一个256字节长的哈希值,然后使用长度为64的十六进制字符串表示。
11.进一步的,所述计算待去重工作节点下文件块的标识值,将文件全路径与所述标识值聚合成映射数组并发送至hdfs的命名空间还包括:工作节点周期性地接收以心跳形式分发的去重任务,并且将所述映射数组以心跳形式发送至hdfs的命名空间。
12.进一步的,所述二次聚合所述映射数组的过程为:
13.上报各节点键值对数组为初始数组;如果已聚合数组为空,则指定任意一个初始数组中的键值对为已聚合数组;如果不为空,把初始数组的键值对逐个输入至已聚合数组中;
14.查询已聚合数组中是否包含相同的键值对,如果是,则键值对插入失败,从初始数组中移除;如果否,将键值对插入已聚合数组,并从初始数组中移除。
15.进一步的,所述方法还包括:查询第二映射数组中键值对的标识值在映射表中如果不存在,则直接将所述键值对插入映射表中。
16.进一步的,所述方法还包括:
17.接收修改文件的指令;
18.通过键值对数据库中映射表查询待修改文件的所有块标识值,然后在所述映射表中逐一查询所述块标识值对应的文件是否为待修改文件;如果查询到的文件均为待修改文件,则执行修改操作;
19.如果查询到的文件有非待修改文件,则首先将待修改文件重复标志值的块复制,复制后的块索引信息更新至hdfs的命名空间;然后继续修改待修改文件,直至修改完成后重新生成待修改文件与块标识值的键值对插入映射表中。
20.进一步的,所述方法还包括:
21.接收删除文件的指令;
22.通过键值对数据库中映射表查询待删除文件的所有块标识值,然后在所述映射表中逐一查询所述块标识值对应的文件是否为待删除文件;如果查询到的文件均为待删除文件,则执行删除操作;
23.如果查询到的文件有非待删除文件,则仅删除待删除文件在hdfs的命名空间中索引信息与映射表中的键值对信息。
24.本发明还提出了一种基于hdfs的数据去重系统,包括文件标识模块、去重任务模块、重复检查模块和索引更新模块;
25.所述文件标识模块用于计算待去重工作节点下文件块的标识值,将文件全路径与所述标识值组成键值对,然后将所述键值对聚合成第一映射数组并发送至hdfs的命名空间;
26.所述去重任务模块用于在所述hdfs的命名空间,二次聚合所述映射数组得到第二映射数组;
27.所述重复查询模块用于查询第二映射数组中键值对的标识值在映射表中是否存在,如果不存在,则直接将所述键值对插入映射表中;如果已经存在,则执行文件去重;
28.所述索引更新模块用于执行文件去重,获取第二映射数组中键值对对应的块索引信息,根据所述块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
29.本发明还提出了一种设备,包括:
30.存储器,用于存储计算机程序;
31.处理器,用于执行所述计算机程序时实现所述的方法步骤。
32.本发明还提出了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法步骤。
33.发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
34.本发明提出了一种基于hdfs的数据去重方法、系统、设备和存储介质,该方法包括计算待去重工作节点下文件块的标识值,将文件全路径与标识值组成键值对,然后将键值对聚合成第一映射数组并发送至hdfs的命名空间;在hdfs的命名空间,二次聚合映射数组得到第二映射数组;查询第二映射数组中键值对的标识值在映射表中如果已经存在,获取第二映射数组中键值对对应的块索引信息,根据块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。该方法在执行数据去重操作时,还提出了数据的修改和删除的方法。本发明对已写入hdfs的文件进行去重,通过标识值设定查找不同文件相同文件块的存在,通过删除重复块重构文件索引实现去重。同时,为了不影响对已去重文件的删除和修改操作,构建了完整的兼容逻辑链路。删除已去重文件操作而言,若同一文件块对应多个文件,将只删除索引相关的元数据信息不删除文件块;对修改已去重文件操作,若同一文件块对应多个文件,将复制出相同文件块替换原索引以支持修改。本发明提出基于hdfs的数据去重,实现hdfs数据去重服务化,免去外部依赖,可有效降低存储成本。去重后自动更新文件块索引,不影响文件读写性能,实现应用层无感知、数据去重透明化,而且实现关键接口覆写,提升去重文件的接口兼容性。
35.基于一种基于hdfs的数据去重方法,还提出了一种基于hdfs的数据去重系统、设备和存储介质,同样具有上述方法的作用,在此不做赘述。
附图说明
36.如图1为本发明实施例1一种基于hdfs的数据去重方法流程图;
37.如图2为本发明实施例1中二次聚合映射数组的方法流程图;
38.如图3为本发明实施例1一种基于hdfs的数据去重方法中去重单元块信息替换过程示意图;
39.如图4为本发明实施例1一种基于hdfs的数据去重方法中修改单元块信息修改过程示意图;
40.如图5为本发明实施例2一种基于hdfs的数据去重系统示意图。
具体实施方式
41.为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
42.实施例1
43.本发明实施例1提出了一种基于hdfs的数据去重方法,实现hdfs数据去重服务化,免去外部依赖,可有效降低存储成本,去重后自动更新文件块索引,不影响文件读写性能,实现应用层无感知、数据去重透明化。
44.如图1给出了本发明实施例1一种基于hdfs的数据去重方法流程图。
45.在步骤s101中,计算待去重工作节点下文件块的标识值,将文件全路径与标识值组成键值对,然后将键值对聚合成第一映射数组并发送至hdfs的命名空间。当各个datanode由心跳接收到去重任务后,将对该节点下所有文件块进行计算,计算得到的标识值由映射聚合模块构建成键值对,再以心跳的形式发送给namenode。
46.其中namenode:namenode是hdfs的命名空间,它维护着文件系统树及整棵树内所有的文件和目录,包括文件与datanode节点的映射信息、文件与文件块的映射信息等;
47.datanode:datanode是hdfs的工作节点,它们根据需要存储并检索数据块,定期以心跳形式向namenode发送它们所存储的块列表。
48.采用sha256算法计算每个文件块的标识值,对于任意大小的文件块均将生成一个256字节长的哈希值,使用长度为64的十六进制字符串表示。相比md5与sha1算法,该算法出现碰撞的概率远小于前两者,因此更适合作为数量达亿级以上文件块的标识值。
49.将该节点文件全路径字符串与所属的文件块标识值组成键值对,然后将所有键值对聚合成一个数组,通过心跳上报给namenode。
50.在步骤s102中,在hdfs的命名空间,二次聚合映射数组得到第二映射数组。该步骤中,设定分发去重任务的触发周期,默认每六小时触发一次去重任务。任务触发后将以心跳形式发送给各个datanode节点,通过远程过程调用启动标识计算模块,完成任务分发。在步骤s101中,将聚合后的映射结果返回后,在本步骤将进行二次聚合以去除相同文件不同副本的映射对。
51.如图2为本发明实施例1中二次聚合映射数组的方法流程图;
52.上报各节点键值对数组为初始数组;如果已聚合数组为空,则指定任意一个初始数组中的键值对为已聚合数组;如果不为空,把初始数组的键值对逐个输入至已聚合数组中;
53.查询已聚合数组中是否包含相同的键值对,如果是,则键值对插入失败,从初始数组中移除;如果否,将键值对插入已聚合数组,并从初始数组中移除。
54.在步骤s103中,查询第二映射数组中键值对的标识值在映射表中是否存在,如果不存在,则直接将所述键值对插入映射表中;如果已经存在,则执行文件去重。
55.接收到聚合数组后将逐个插入数据库映射表中,每条键值对插入前需查询该键值
对的标识值在映射表中是否已存有相同的,如果没有相同的标识值则将该键值对直接插入映射表中,如果有相同标识,则执行文件去重。
56.在步骤s104中,如果第二映射数组中键值对的标识值在映射表中如果已经存在,获取第二映射数组中键值对对应的块索引信息,根据块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
57.如图3为本发明实施例1一种基于hdfs的数据去重方法中去重单元块信息替换过程示意图。
58.首先获取未录入映射表中键值对对应文件的块索引信息blockinfo

i,然后获取已录入映射表中重复标识值块的块信息blockinfo

j,将重复标识值块对应的块信息blockinfo

i2替换为blockinfo

j2,最后将键值对信息map1录入映射表中。
59.本发明提出的一种基于hdfs的数据去重方法中还给出了修改数据和删除数据的方法。如图4为本发明实施例1一种基于hdfs的数据去重方法中修改单元块信息修改过程示意图。
60.接收修改文件的指令;
61.通过键值对数据库中映射表查询待修改文件的所有块标识值,然后在所述映射表中逐一查询所述块标识值对应的文件是否为待修改文件;如果查询到的文件均为待修改文件,则执行修改操作;
62.如果查询到的文件有非待修改文件,则首先将待修改文件重复标志值的块复制,复制后的块索引信息blockinfo

copy更新至hdfs的namenode中;然后继续修改待修改文件,直至修改完成后重新生成待修改文件与块标识值的键值对插入映射表中。
63.删除数据和修改数据的过程相似:
64.接收删除文件的指令;
65.通过键值对数据库中映射表查询待删除文件的所有块标识值,然后在映射表中逐一查询所述块标识值对应的文件是否为待删除文件;如果查询到的文件均为待删除文件,则执行删除操作;
66.如果查询到的文件有非待删除文件,则仅删除待删除文件在hdfs的namenode中索引信息与映射表中的键值对信息。
67.在对数据的操作完成之后,覆写原有客户端的修改文件和删除文件逻辑,在修改、删除文件逻辑过程中添加访问索引,从而不影响数据去重后的正常增删改查。
68.本发明提出的一种基于hdfs的数据去重方法,提出基于hdfs的数据去重,实现hdfs数据去重服务化,免去外部依赖,可有效降低存储成本。去重后自动更新文件块索引,不影响文件读写性能,实现应用层无感知、数据去重透明化,而且实现关键接口覆写,提升去重文件的接口兼容性。
69.实施例2
70.基于本发明实施例1提出的一种基于hdfs的数据去重方法,本发明实施例2还提出了一种基于hdfs的数据去重系统,如图5为本发明实施例2一种基于hdfs的数据去重系统示意图。该系统包括:文件标识模块、去重任务模块、重复检查模块和索引更新模块;
71.文件标识模块用于计算待去重工作节点下文件块的标识值,将文件全路径与所述标识值组成键值对,然后将所述键值对聚合成第一映射数组并发送至hdfs的命名空间;
72.去重任务模块用于在所述hdfs的命名空间,二次聚合所述映射数组得到第二映射数组;
73.重复查询模块用于查询第二映射数组中键值对的标识值在映射表中是否存在,如果不存在,则直接将所述键值对插入映射表中;如果已经存在,则执行文件去重;
74.索引更新模块用于执行文件去重,获取第二映射数组中键值对对应的块索引信息,根据所述块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
75.本发明实施例2中的文件标识模块执行的详细过程为:
76.当各个datanode由心跳接收到去重任务后,将对该节点下所有文件块进行计算,计算得到的标识值由映射聚合模块构建成键值对,再以心跳的形式发送给namenode。
77.其中namenode:namenode是hdfs的命名空间,它维护着文件系统树及整棵树内所有的文件和目录,包括文件与datanode节点的映射信息、文件与文件块的映射信息等;
78.datanode:datanode是hdfs的工作节点,它们根据需要存储并检索数据块,定期以心跳形式向namenode发送它们所存储的块列表。
79.采用sha256算法计算每个文件块的标识值,对于任意大小的文件块均将生成一个256字节长的哈希值,使用长度为64的十六进制字符串表示。相比md5与sha1算法,该算法出现碰撞的概率远小于前两者,因此更适合作为数量达亿级以上文件块的标识值。
80.将该节点文件全路径字符串与所属的文件块标识值组成键值对,然后将所有键值对聚合成一个数组,通过心跳上报给namenode。
81.去重任务模块实现的过程为:设定分发去重任务的触发周期,默认每六小时触发一次去重任务。任务触发后将以心跳形式发送给各个datanode节点,通过远程过程调用启动标识计算模块,完成任务分发。文件标识模块将聚合后的映射结果返回后,在去重任务模块将进行二次聚合以去除相同文件不同副本的映射对。
82.如图2为本发明实施例1中二次聚合映射数组的方法流程图;
83.上报各节点键值对数组为初始数组;如果已聚合数组为空,则指定任意一个初始数组中的键值对为已聚合数组;如果不为空,把初始数组的键值对逐个输入至已聚合数组中;
84.查询已聚合数组中是否包含相同的键值对,如果是,则键值对插入失败,从初始数组中移除;如果否,将键值对插入已聚合数组,并从初始数组中移除。
85.重复检查模块实现的过程为:接收到聚合数组后将逐个插入数据库映射表中,每条键值对插入前需查询该键值对的标识值在映射表中是否已存有相同的,如果没有相同的标识值则将该键值对直接插入映射表中,如果有相同标识,则执行文件去重。
86.索引更新模块实现的过程为:如果第二映射数组中键值对的标识值在映射表中如果已经存在,获取第二映射数组中键值对对应的块索引信息,根据块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
87.如图3为本发明实施例1一种基于hdfs的数据去重方法中去重单元块信息替换过程示意图。
88.首先获取未录入映射表中键值对对应文件的块索引信息blockinfo

i,然后获取已录入映射表中重复标识值块的块信息blockinfo

j,将重复标识值块对应的块信息
blockinfo

i2替换为blockinfo

j2,最后将键值对信息map1录入映射表中。
89.索引更新模块中还给出了修改数据和删除数据的过程。如图4为本发明实施例1一种基于hdfs的数据去重方法中修改单元块信息修改过程示意图。
90.接收修改文件的指令;
91.通过键值对数据库中映射表查询待修改文件的所有块标识值,然后在所述映射表中逐一查询所述块标识值对应的文件是否为待修改文件;如果查询到的文件均为待修改文件,则执行修改操作;
92.如果查询到的文件有非待修改文件,则首先将待修改文件重复标志值的块复制,复制后的块索引信息blockinfo

copy更新至hdfs的namenode中;然后继续修改待修改文件,直至修改完成后重新生成待修改文件与块标识值的键值对插入映射表中。
93.删除数据和修改数据的过程相似:
94.接收删除文件的指令;
95.通过键值对数据库中映射表查询待删除文件的所有块标识值,然后在映射表中逐一查询所述块标识值对应的文件是否为待删除文件;如果查询到的文件均为待删除文件,则执行删除操作;
96.如果查询到的文件有非待删除文件,则仅删除待删除文件在hdfs的namenode中索引信息与映射表中的键值对信息。
97.客户端模块主要作用是覆写原有客户端的修改文件和删除文件逻辑,在修改、删除文件逻辑过程中添加访问索引更新模块对应单元的过程,从而实现客户端原有功能不影响数据去重后的正常增删改查。
98.实施例3
99.本发明还提出了一种设备,包括:
100.存储器,用于存储计算机程序;
101.处理器,用于执行所述计算机程序时实现方法步骤如下:
102.在步骤s101中,计算待去重工作节点下文件块的标识值,将文件全路径与标识值组成键值对,然后将键值对聚合成第一映射数组并发送至hdfs的命名空间。当各个datanode由心跳接收到去重任务后,将对该节点下所有文件块进行计算,计算得到的标识值由映射聚合模块构建成键值对,再以心跳的形式发送给namenode。
103.其中namenode:namenode是hdfs的命名空间,它维护着文件系统树及整棵树内所有的文件和目录,包括文件与datanode节点的映射信息、文件与文件块的映射信息等;
104.datanode:datanode是hdfs的工作节点,它们根据需要存储并检索数据块,定期以心跳形式向namenode发送它们所存储的块列表。
105.采用sha256算法计算每个文件块的标识值,对于任意大小的文件块均将生成一个256字节长的哈希值,使用长度为64的十六进制字符串表示。相比md5与sha1算法,该算法出现碰撞的概率远小于前两者,因此更适合作为数量达亿级以上文件块的标识值。
106.将该节点文件全路径字符串与所属的文件块标识值组成键值对,然后将所有键值对聚合成一个数组,通过心跳上报给namenode。
107.在步骤s102中,在hdfs的命名空间,二次聚合映射数组得到第二映射数组。该步骤中,设定分发去重任务的触发周期,默认每六小时触发一次去重任务。任务触发后将以心跳
形式发送给各个datanode节点,通过远程过程调用启动标识计算模块,完成任务分发。在步骤s101中,将聚合后的映射结果返回后,在本步骤将进行二次聚合以去除相同文件不同副本的映射对。
108.如图2为本发明实施例1中二次聚合映射数组的方法流程图;
109.上报各节点键值对数组为初始数组;如果已聚合数组为空,则指定任意一个初始数组中的键值对为已聚合数组;如果不为空,把初始数组的键值对逐个输入至已聚合数组中;
110.查询已聚合数组中是否包含相同的键值对,如果是,则键值对插入失败,从初始数组中移除;如果否,将键值对插入已聚合数组,并从初始数组中移除。
111.在步骤s103中,查询第二映射数组中键值对的标识值在映射表中是否存在,如果不存在,则直接将所述键值对插入映射表中;如果已经存在,则执行文件去重。
112.接收到聚合数组后将逐个插入数据库映射表中,每条键值对插入前需查询该键值对的标识值在映射表中是否已存有相同的,如果没有相同的标识值则将该键值对直接插入映射表中,如果有相同标识,则执行文件去重。
113.在步骤s104中,如果第二映射数组中键值对的标识值在映射表中如果已经存在,获取第二映射数组中键值对对应的块索引信息,根据块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
114.如图3为本发明实施例1一种基于hdfs的数据去重方法中去重单元块信息替换过程示意图。
115.首先获取未录入映射表中键值对对应文件的块索引信息blockinfo

i,然后获取已录入映射表中重复标识值块的块信息blockinfo

j,将重复标识值块对应的块信息blockinfo

i2替换为blockinfo

j2,最后将键值对信息map1录入映射表中。
116.本发明提出的一种基于hdfs的数据去重方法中还给出了修改数据和删除数据的方法。如图4为本发明实施例1一种基于hdfs的数据去重方法中修改单元块信息修改过程示意图。
117.接收修改文件的指令;
118.通过键值对数据库中映射表查询待修改文件的所有块标识值,然后在所述映射表中逐一查询所述块标识值对应的文件是否为待修改文件;如果查询到的文件均为待修改文件,则执行修改操作;
119.如果查询到的文件有非待修改文件,则首先将待修改文件重复标志值的块复制,复制后的块索引信息blockinfo

copy更新至hdfs的namenode中;然后继续修改待修改文件,直至修改完成后重新生成待修改文件与块标识值的键值对插入映射表中。
120.删除数据和修改数据的过程相似:
121.接收删除文件的指令;
122.通过键值对数据库中映射表查询待删除文件的所有块标识值,然后在映射表中逐一查询所述块标识值对应的文件是否为待删除文件;如果查询到的文件均为待删除文件,则执行删除操作;
123.如果查询到的文件有非待删除文件,则仅删除待删除文件在hdfs的namenode中索引信息与映射表中的键值对信息。
124.在对数据的操作完成之后,覆写原有客户端的修改文件和删除文件逻辑,在修改、删除文件逻辑过程中添加访问索引,从而不影响数据去重后的正常增删改查。
125.需要说明:本发明技术方案还提供了一种电子设备,包括:通信接口,能够与其它设备比如网络设备等进行信息交互;处理器,与通信接口连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的一种基于hdfs的数据去重方法,而所述计算机程序存储在存储器上。当然,实际应用时,电子设备中的各个组件通过总线系统耦合在一起。可理解,总线系统用于实现这些组件之间的连接通信。总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。本技术实施例中的存储器用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。可以理解,存储器可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read

only memory)、可擦除可编程只读存储器(eprom,erasable programmable read

only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read

only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd

rom,compact disc read

only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random accessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronousdynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本技术实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。上述本技术实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、dsp(digital signal processing,即指能够实现数字信号处理技术的芯片),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的程序,结合其硬件完成前述方法的步骤。处理器执行所述程序时实现本技术实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
126.实施例4
127.本发明还提出了一种可读存储介质,可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现方法步骤如下:
128.在步骤s101中,计算待去重工作节点下文件块的标识值,将文件全路径与标识值组成键值对,然后将键值对聚合成第一映射数组并发送至hdfs的命名空间。当各个datanode由心跳接收到去重任务后,将对该节点下所有文件块进行计算,计算得到的标识值由映射聚合模块构建成键值对,再以心跳的形式发送给namenode。
129.其中namenode:namenode是hdfs的命名空间,它维护着文件系统树及整棵树内所有的文件和目录,包括文件与datanode节点的映射信息、文件与文件块的映射信息等;
130.datanode:datanode是hdfs的工作节点,它们根据需要存储并检索数据块,定期以心跳形式向namenode发送它们所存储的块列表。
131.采用sha256算法计算每个文件块的标识值,对于任意大小的文件块均将生成一个256字节长的哈希值,使用长度为64的十六进制字符串表示。相比md5与sha1算法,该算法出现碰撞的概率远小于前两者,因此更适合作为数量达亿级以上文件块的标识值。
132.将该节点文件全路径字符串与所属的文件块标识值组成键值对,然后将所有键值对聚合成一个数组,通过心跳上报给namenode。
133.在步骤s102中,在hdfs的命名空间,二次聚合映射数组得到第二映射数组。该步骤中,设定分发去重任务的触发周期,默认每六小时触发一次去重任务。任务触发后将以心跳形式发送给各个datanode节点,通过远程过程调用启动标识计算模块,完成任务分发。在步骤s101中,将聚合后的映射结果返回后,在本步骤将进行二次聚合以去除相同文件不同副本的映射对。
134.如图2为本发明实施例1中二次聚合映射数组的方法流程图;
135.上报各节点键值对数组为初始数组;如果已聚合数组为空,则指定任意一个初始数组中的键值对为已聚合数组;如果不为空,把初始数组的键值对逐个输入至已聚合数组中;
136.查询已聚合数组中是否包含相同的键值对,如果是,则键值对插入失败,从初始数组中移除;如果否,将键值对插入已聚合数组,并从初始数组中移除。
137.在步骤s103中,查询第二映射数组中键值对的标识值在映射表中是否存在,如果不存在,则直接将所述键值对插入映射表中;如果已经存在,则执行文件去重。
138.接收到聚合数组后将逐个插入数据库映射表中,每条键值对插入前需查询该键值对的标识值在映射表中是否已存有相同的,如果没有相同的标识值则将该键值对直接插入映射表中,如果有相同标识,则执行文件去重。
139.在步骤s104中,如果第二映射数组中键值对的标识值在映射表中如果已经存在,获取第二映射数组中键值对对应的块索引信息,根据块索引信息,将重复标识值块对应的块信息替换为第二映射数组中键值对的标识值对应的块信息。
140.如图3为本发明实施例1一种基于hdfs的数据去重方法中去重单元块信息替换过程示意图。
141.首先获取未录入映射表中键值对对应文件的块索引信息blockinfo

i,然后获取已录入映射表中重复标识值块的块信息blockinfo

j,将重复标识值块对应的块信息blockinfo

i2替换为blockinfo

j2,最后将键值对信息map1录入映射表中。
142.本发明提出的一种基于hdfs的数据去重方法中还给出了修改数据和删除数据的方法。如图4为本发明实施例1一种基于hdfs的数据去重方法中修改单元块信息修改过程示意图。
143.接收修改文件的指令;
144.通过键值对数据库中映射表查询待修改文件的所有块标识值,然后在所述映射表中逐一查询所述块标识值对应的文件是否为待修改文件;如果查询到的文件均为待修改文件,则执行修改操作;
145.如果查询到的文件有非待修改文件,则首先将待修改文件重复标志值的块复制,复制后的块索引信息blockinfo

copy更新至hdfs的namenode中;然后继续修改待修改文件,直至修改完成后重新生成待修改文件与块标识值的键值对插入映射表中。
146.删除数据和修改数据的过程相似:
147.接收删除文件的指令;
148.通过键值对数据库中映射表查询待删除文件的所有块标识值,然后在映射表中逐一查询所述块标识值对应的文件是否为待删除文件;如果查询到的文件均为待删除文件,则执行删除操作;
149.如果查询到的文件有非待删除文件,则仅删除待删除文件在hdfs的namenode中索引信息与映射表中的键值对信息。
150.在对数据的操作完成之后,覆写原有客户端的修改文件和删除文件逻辑,在修改、删除文件逻辑过程中添加访问索引,从而不影响数据去重后的正常增删改查。
151.本技术实施例提供的一种基于hdfs的数据去重的设备和存储介质中相关部分的说明可以参见本技术实施例1提供的一种基于hdfs的数据去重方法中对应部分的详细说明,在此不再赘述。
152.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
153.上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制。对于所属领域的技术人员来说,在上述说明的基础上还可以做出其它不同形式的修改或变形。这里无需也无法对所有的实施方式予以穷举。在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献