一种基于分布式内存计算的数据去重方法

文档序号:9597884阅读:1272来源:国知局
一种基于分布式内存计算的数据去重方法
【技术领域】
[0001] 本发明涉及海量数据去重领域,特别涉及一种基于分布式内存计算的数据去重方 法。
【背景技术】
[0002] 当下分布式系统已被广泛的应用到信息化产业中,用于应对海量数据的日益增 长。分布式系统虽然解决了海量数据的存储问题,但同时带来了新的挑战一一数据的备份 和还原耗费的时间越来越长,数据的冗余越来越多,数据的存储和维护成本越来越高。虽然 单位存储价格显著降低了,但是存储总成本却不断上升,因此重复数据删除技术得到越来 越多的关注。如何为海量数据的二级存储进行高效的去重,尽可能减少去重过程耗费的时 间,已是亟待解决的问题。
[0003] 近几年关于重复数据删除的研究达到了高潮,在2011年的FAST会议上,论 文《A Study of Practical Deduplication》对主存储系统的数据去重进行了分析,论 文〈〈Tradeoffs in Scalable Data Routing for Deduplication Clusters〉〉对数据去 重集群中可扩展数据路由进行了权衡。此外在分布式系统中,Jianming Young等人提 出了一种使用HDFS和Hbase的方法,结合使用MD5和SHA-1哈希函数计算文件的哈希 值,并值传递给Hbase,将新的哈希值同现有的值域比较,以确定是否要求客户端上传文 件。同时结合使用MD5和SHA-1,避免偶发性的碰撞。由莱比锡大学开发的一个原型工具 Dedoop (Deduplication with Hadoop),将MapReduce应用于大数据中的实体解析处理,工 具囊括了 MapReduce在重复数据删除技术中最为成熟的应用方式。基于实体匹配的分块是 指将输入数据按照类似的数据进行语义分块,并且对于相同块的实体进行限定。实体解析 处理分成两个MapReduce作业,分析作业主要用于统计记录出现频率,匹配作业用于处理 负载均衡以及近似度计算。另外,匹配作业采用"贪婪模式"的负载均衡调控,也就是说匹 配任务按照任务处理数据大小的降序排列,并做出最小负载的Reduce作业分配。Dedoop还 采用了有效的技术来避免多余的配对比较。它要求MR程序必须明确定义出哪个Reduce任 务在处理哪个配对比较,这样就无需在多个节点上进行相同的配对比较。Ashish Kathpal 等人将MapReduce和存储控制器结合使用,提出通过使用Hadoop MapReduce的重复检测机 制来替代Netapp原有的重复检测环节,将数据指纹由存储控制器迀移到HDFS,生成数据指 纹数据库,并在HDFS上永久存储该数据库,同时使用MapReduce从数据指纹记录集中筛选 出重复记录,并将去重复后的数据指纹表保存回存储控制器。国内刘厚贵等人提出了一种 可扩展的指纹查询方法,基于取样机制的指纹查询优化方法,通过取样的方法降低了需查 询的数据指纹规模,并利用可扩展的索引结构对数据指纹进行组织存储,进一步提高了数 据指纹的查询效率。另外,国内王建辉等人也对支持文件重删的HDFS分布式备份系统进行 了研究,利用开源架构Lucene建立文件索引,便于大量文件快速查询信息。重复数据删除 过程中,先检验每块是否相同,若第一次备份,文件会被存储在存储介质里;若需要备份的 文件块与已备份的文件块相同,则不备份此块,换用指针指向重复的数据,记录备份信息, 便于恢复。
[0004] 虽然近几年在云数据备份的去重方面已经进行了不少工作的研究,但目前对于海 量数据去重主要是针对最优文件分块,需要事先进行数据预处理和数据建模,从数据库或 磁盘上读取指纹信息并做实时分析和运算,然后进行对比,这种方式的去重效率不高,耗费 时间和系统资源。因此,针对分布式内存计算方法进行数据去重系统建模,充分发挥多核的 能力,以对数据并行处理,内存读取的速度成倍数加快,以解决当下海量数据不能快速去重 的问题。

【发明内容】

[0005] 本发明的目的在于克服现有技术的缺点与不足,提供一种基于分布式内存计算的 数据去重方法,能将文件分块指纹同分布式内存中缓存库对比,滤掉相同文件块,并为分布 式系统中各主机分配不同任务以达到系统负载均衡,提高海量数据去重的效率,从而节省 主机空间和网络带宽,为服务商降低数据运维的成本。
[0006] 本发明的目的通过以下的技术方案实现:
[0007] -种基于分布式内存计算的数据去重方法,包含以下顺序的步骤:
[0008] S1.创建文件分块指纹集并缓存到分布式内存中;
[0009] S2.按照最优的文件块划分策略对文件进行分块,并完成分块指纹计算,同内存中 缓存的指纹集对比,找到匹配的分块,为其添加对应引用;
[0010] S3.分块指纹集的存储采用多级缓存策略,权值大的缓存到内存中,权值小的缓存 到磁盘上;
[0011] S4.内存分为多个区域,存储不同类型的指纹信息,以对文件进行不同的指纹对比 操作。
[0012] 所述的基于分布式内存计算的数据去重方法,还包括:创建文件分块指纹集之后, 为创建文件分块指纹集添加指纹集初始权值。
[0013] 所述的指纹集初始权值随着时间推移逐渐衰减,直至初始权值为零。
[0014] 所述的文件分块指纹集的具体信息包括:分块对应路径、分块创建时间、分块 HASH值、指纹集创建时间、指纹集被引用次数、指纹集权值;所述的指纹集权值由指纹集初 始权值、指纹集被引用次数、指纹集创建时间共同决定,指纹集权值用于统一指纹集的起始 状态;指纹集创建时间用于指纹集权值的衰减;指纹集被引用次数表示指纹集活跃程度。
[0015] 所述的步骤S2,具体包含以下步骤:
[0016] S201.计算待比较文件分块的指纹值,同分布式内存中缓存的指纹集做出比较,比 较的顺序按照指纹集权值降序排列,权值大的指纹集优先对比;
[0017] S202.若分布式内存中没有找到匹配的指纹集,则从磁盘上读取没有缓存的指纹 集完成对比,对比策略也是按照权值降序排列对比;
[0018] S203.若从内存中或磁盘上找到指纹相同指纹集,则将该指纹集中的引用添加到 该分块,并修改该指纹集被引用次数以及权值;
[0019] S204.若没找到,则创建新的指纹集,完成指纹集各项信息的初始化,同时为分块 添加该新指纹集的引用。
[0020] 步骤S3中,所述的多级缓存策略包括:若内存中无法缓存全部指纹集,磁盘则作 为指纹集二级缓存,根据权值降序排列,按照该顺序将指纹集缓存到内存中,将不能缓存到 内存中的指纹集缓存到磁盘上。
[0021] 所述的多级缓存策略还包括:在创建新的指纹集或某指纹集被匹配到时,根据权 值大小决定该指纹集是替换到内存中,还是直接缓存到磁盘上。
[0022] 步骤S4中,所述的内存分为多个区域,具体为:用于缓存指纹集的内存分为两部 分,一部分缓存文件级的指纹集信息;一部分缓存分块级的指纹集信息;文件级或分块级 的指纹集无法缓存到内存中的部分只能缓存到磁盘上,不能侵占其它部分的内存。
[0023] 本发明与现有技术相比,具有如下优点和有益效果:
[0024] (1)本发明是基于分布式内存计算,与一般的分布式系统数据去重不同,本方法中 通过将指纹信息提前缓存到内存中,在内存中可对大规模海量的数据做实时分析和运算, 查找文件分块是否存在时,直接对比内存中的指纹集,无需从磁盘读取,因而本发明去重速 度快。
[0025] (2)基于分布式内存计算能够充分发挥多核的能力,将指纹信息数据按照优化的 列存储方式存放在内存里面,在对比指纹信息时可进行并行处理,内存读取的速度能够成 倍加快。
[0026] (3)从多方面综合计算得出指纹集的权值,并以权值作为依据,控制指纹集是否能 缓存到内存中,权值更大的指纹集即更活跃,在某时间段能够快速匹配到。同时在内存空间 不足时,采用多级缓存策略将部分指纹集缓存到磁盘上,便于多次使用。
[0027] (4)将内存指纹存储区域划分为两部分,采用文件级和分块级两种方式进行数据 去重。两种去重方式结合能够减少分块指纹信息集,同时对于部分文件无需分块即可处理。
【附图说明】
[0028] 图1为本发明所述的一种基于分布式内存计算的数据去重方法的流程图。
[0029] 图2为文件指纹集和分块指纹集的区域划分示意图。
[0030] 图3为内存中或磁盘上缓存的指纹集信息示意图。
[0031] 图4为基于分布式内存计算的数据去重方法的文件级去重实施示意图。
[0032] 图5为基于分布式内存计算的数据去重方法的分块级去重实施示意图。
【具体实施方式】
[0033] 下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限 于此。
[0034] 实施例一
[0035] -种基于分布式内存计算的数据去重方法,包括以下步骤:
[0036] (1)分布式内存中创建文件分块指纹集,并将该指纹集缓存到内存中。其中指纹集 包含的内容:一部分是分块对应路径、分块创建时间、分块HASH值等;另一部分是指纹集创 建时间、指纹集被引用次数、指纹集权值等。第一部分内容用于映射指纹集和分块,第二部 分内容用于控制指纹集缓存到分布式内存中或缓存到磁盘上。
[0037] (2)创建指纹集时为其添加统一的初始权值,决定指纹集的缓存位置。其中各指纹 集的初始权值随着时间推移逐渐衰减,直至初始权值为零。
[0038] (3)分布式系统中进行文件备份或上传操作时,作业控制将会在某主机为该文件 创建一个去重任务,按照最优的文件块划分策略对文件进行分块,并完成分块指纹计算。将 各分块指纹同内存中缓存的指纹集对比,找到匹配的分块,为其添加对应引用。其中分块指 纹对比的方法为:
[0039] (3. 1)计算待比较文件分块的指纹值,同分布式内存中缓存的指纹集做出比较,比 较的顺序按照指纹集权值降序排列,权值大的指纹集优先对比;
[0040] (3. 2)若分布式内存中没有找到匹配的指纹集,则从磁盘上读取没有缓存的指纹 集完成对比,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1