一种大数据冗余检测方法技术

技术编号:13397175 阅读:51 留言:0更新日期:2016-07-23 17:34
本发明专利技术公开了一种大数据冗余检测方法,该方法首先进行全文件哈希值检测,判断文件是否是冗余数据,然后在文件中随机选择一个定长数据块,对该数据块进行扩展,再判断扩展后的数据块是否是冗余数据,最后对文件剩余的数据块再进行检测。本发明专利技术所述的大数据冗余检测方法不仅能够在大数据系统中快速查找到冗余数据,并且对于可能出现的相似文件,能有效的降低数据匹配的粒度,可以尽可能的找到相似文件中的冗余数据块。

【技术实现步骤摘要】
一种大数据冗余检测方法
本专利技术属于计算机和互联网领域,尤其涉及大数据领域,具体的,涉及一种大数据的冗余检测方法。
技术介绍
随着计算机和互联网技术的快速发展,我们处在了一个信息爆炸的时代,为了处理大量的信息,出现了大数据的概念。所谓大数据,是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。由于数据的海量特性,人们仅仅凭一己之力很难对这些数据这些分析,但是在以云计算为代表的技术创新大幕的衬托下,这些原本很难收集和使用的数据开始容易被利用起来了,通过各行各业的不断创新,大数据逐步为人类创造更多的价值。但是,尽管用于做大数据分析的计算机越来越多,性能越来越好,但是面对海量数据仍然力不从心,因此大数据分析的第一步,是检测和消除其中的相同数据,即冗余数据,通过冗余数据检测,大数据系统可以仅保存冗余数据的一份存档,其余的冗余数据改以指针代替,指向上述存档。一方面是减少存储空间和网络带宽的占用,另一方面是减少数据分析量。现有技术中的常见冗余检测方法是通过比较存储文件的哈希值来检测冗余数据。但是单纯以文件为单位来检测冗余,其粒度太大,不能处理相似文件中的部分相同数据,因此需要考虑减小粒度,能够尽可能检测相似文件间的部分冗余数据。
技术实现思路
为了解决现有技术中的上述问题,本专利技术提出了一种大数据冗余检测方法,该方法能够快速查找到冗余数据,对于可能出现的相似文件,有效的降低数据匹配的粒度,可以尽可能的找到相似文件中的冗余数据块。本专利技术所采用的技术方案如下:一种大数据冗余检测方法,该方法包括如下步骤:1)在大数据系统的数据库内建立所有文件的哈希值表FH_table以及各个数据块的哈希值表BH_table;2)当大数据系统需要存储一个新文件时,计算该文件的哈希值,同时检查FH_table里是否存储有该文件的哈希值,如果有,则确认该文件是冗余数据,方法结束;如果没有,则在FH_table中记录该文件的哈希值;3)将该文件作为一个数据单元加入数据检测集合,该数据检测集合是待检测的数据单元的集合;4)判断该数据检测集合是否为空集,如果是,则方法结束,如果不是,继续执行后续步骤;5)从数据检测集合中取出一个数据单元,计算该数据单元的哈希值,检测BH_table和FH_table里是否有该数据单元的哈希值,如果有,则确认该数据单元是冗余数据,并返回步骤4;如果没有,则继续后续步骤;6)判断该数据单元的大小是否小于Blocksize,所述Blocksize是一个预定义的阈值,如果小于,则存储该数据单元,并将该数据单元的哈希值记录在BH_table中,同时返回步骤4,否则继续后续步骤;7)设该数据单元的大小为L字节,随机生成一个自然数R,使得其满足1≤R≤L-Blocksize+1;从而在该数据单元中确定一个定长数据块,该定长数据块包括该数据单元的第R个字节到第R+Blocksize-1个字节;8)对该数据块在数据单元中的位置进行扩展,获得一个不定长数据块;9)计算所述不定长数据块的哈希值,判断该不定长数据块的哈希值是否记录在BH_table或FH_table中,如果是,则该不定长数据块是冗余数据;如果不是,则存储该不定长数据块,并将其哈希值记录在BH_table中;10)将所述数据单元去除该不定长数据块后,所剩下的每个数据块都作为一个数据单元加入数据检测集合,并返回步骤4。在本专利技术中:所述的步骤8)中对数据块在数据单元中的位置进行扩展的具体步骤如下:8.1)判断该数据块的前边界是否是该数据单元的第1个字节,如果是,则转步骤8.3,否则继续后续步骤;8.2)获取该数据块的前边界的字节,计算其是否满足预定的条件,如果不满足,则将该数据块的前边界向前移动一个字节,并返回步骤8.1,否则继续执行后续步骤;8.3)判断该数据块的后边界是否为数据单元的最后一个字节,如果是,扩展方法结束,否则继续后续步骤;8.4)获取该数据块后边界的字节,计算其是否满足预定的条件,如果不满足,将数据块的后边界向后移动一个字节,并返回步骤8.3),如果满足,则扩展方法结束。在本专利技术中,所述步骤8.2)包括计算该数据块的前边界所在的字节是否等于预定义的边界向量,如果相等,则认为前边界满足预定条件。在本专利技术中,所述步骤8.2)包括计算该数据块的前边界所在的字节是否等于边界向量,如果相等,则认为前边界满足预定条件;其中所述边界向量根据该数据单元计算得到,即扫描该数据单元的所有字节,统计不同字节出现的次数,选取出现次数最少的字节作为该边界向量,如果出现次数最少的字节有多个,则从中选取在该数据单元中位置最靠前的一个作为该边界向量。在本专利技术中,所述步骤8.2)包括获取该数据块前边界所在的字节H0以及H0之后的7个字节,依次是H1,H2,……,H7,并通过下述公式计算动态边界向量DH,即DH=H0⊕(H1<<1)⊕(H2<<2)⊕……⊕(H7<<7),判断DH是否等于预定义的边界向量值,如果相等,则认为前边界满足预定条件。在本专利技术中,所述步骤8.4)包括计算该数据块的后边界所在的字节是否等于预定义的边界向量,如果相等,则认为后边界满足预定条件。在本专利技术中,所述步骤8.4)包括计算该数据块的后边界所在的字节是否等于边界向量,如果相等,则认为后边界满足预定条件;其中所述边界向量根据该数据单元计算得到,即扫描该数据单元的所有字节,统计不同字节出现的次数,选取出现次数最少的字节作为该边界向量,如果出现次数最少的字节有多个,则从中选取在该数据单元中位置最靠前的一个作为该边界向量。在本专利技术中,所述步骤8.4)包括获取该数据块后边界所在的字节T0以及T0往前的7个字节,依次是T1,T2,……,T7,通过下述公式计算动态边界向量DT,即DT=T0⊕(T1<<1)⊕(T2<<2)⊕……⊕(T7<<7),判断DT是否等于预定义的边界向量值,如果相等,则认为后边界满足预定条件。采用上述技术方案后,本专利技术的技术效果是:本专利技术能够快速查找到冗余数据,并且对于可能出现的相似文件,有效的降低数据匹配的粒度,可以尽可能的找到相似文件中的冗余数据块。【附图说明】此处所说明的附图是用来提供对本专利技术的进一步理解,构成本申请的一部分,但并不构成对本专利技术的不当限定,在附图中:图1是本专利技术的方法流程图。【具体实施方式】下面将结合附图以及具体实施例来详细说明本专利技术,其中的示意性实施例以及说明仅用来解释本专利技术,但并不作为对本专利技术的不当限定。参见图1,本专利技术的基本思想是,对于整个大数据系统,在每个新的文件存储到系统的存储设备时,首先对该文件整体进行哈希值计算,如果文件的哈希值在系统内已经存在,则该文件就是冗余数据;如果不存在,则存储该哈希值,同时对文件内部的数据进行冗余数据检测。文件内部的冗余检测方法通过在文件内部随机选择一个定长数据块,并对该数据块进行扩展,扩展到满足预定条件为止,再进行数据块的哈希值计算和检测,判断其是本文档来自技高网...

【技术保护点】
一种大数据冗余检测方法,其特征在于,该方法包括如下步骤:1)在大数据系统的数据库内建立所有文件的哈希值表FH_table以及各个数据块的哈希值表BH_table;2)当大数据系统需要存储一个新文件时,计算该文件的哈希值,同时检查FH_table里是否存储有该文件的哈希值,如果有,则确认该文件是冗余数据,方法结束;如果没有,则在FH_table中记录该文件的哈希值;3)将该文件作为一个数据单元加入数据检测集合,该数据检测集合是待检测的数据单元的集合;4)判断该数据检测集合是否为空集,如果是,则方法结束,如果不是,继续执行后续步骤;5)从数据检测集合中取出一个数据单元,计算该数据单元的哈希值,检测BH_table和FH_table里是否有该数据单元的哈希值,如果有,则确认该数据单元是冗余数据,并返回步骤4;如果没有,则继续后续步骤;6)判断该数据单元的大小是否小于Blocksize,所述Blocksize是一个预定义的阈值,如果小于,则存储该数据单元,并将该数据单元的哈希值记录在BH_table中,同时返回步骤4,否则继续后续步骤;7)设该数据单元的大小为L字节,随机生成一个自然数R,使得其满足1≤R≤L‑Blocksize+1;从而在该数据单元中确定一个定长数据块,该定长数据块包括该数据单元的第R个字节到第R+Blocksize‑1个字节;8)对该数据块在数据单元中的位置进行扩展,获得一个不定长数据块;9)计算所述不定长数据块的哈希值,判断该不定长数据块的哈希值是否记录在BH_table或FH_table中,如果是,则该不定长数据块是冗余数据;如果不是,则存储该不定长数据块,并将其哈希值记录在BH_table中;10)将所述数据单元去除该不定长数据块后,所剩下的每个数据块都作为一个数据单元加入数据检测集合,并返回步骤4。...

【技术特征摘要】
1.一种大数据冗余检测方法,其特征在于,该方法包括如下步骤:1)在大数据系统的数据库内建立所有文件的哈希值表FH_table以及各个数据块的哈希值表BH_table;2)当大数据系统需要存储一个新文件时,计算该文件的哈希值,同时检查FH_table里是否存储有该文件的哈希值,如果有,则确认该文件是冗余数据,方法结束;如果没有,则在FH_table中记录该文件的哈希值;3)将该文件作为一个数据单元加入数据检测集合,该数据检测集合是待检测的数据单元的集合;4)判断该数据检测集合是否为空集,如果是,则方法结束,如果不是,继续执行后续步骤;5)从数据检测集合中取出一个数据单元,计算该数据单元的哈希值,检测BH_table和FH_table里是否有该数据单元的哈希值,如果有,则确认该数据单元是冗余数据,并返回步骤4;如果没有,则继续后续步骤;6)判断该数据单元的大小是否小于Blocksize,所述Blocksize是一个预定义的阈值,如果小于,则存储该数据单元,并将该数据单元的哈希值记录在BH_table中,同时返回步骤4,否则继续后续步骤;7)设该数据单元的大小为L字节,随机生成一个自然数R,使得其满足1≤R≤L-Blocksize+1;从而在该数据单元中确定一个定长数据块,该定长数据块包括该数据单元的第R个字节到第R+Blocksize-1个字节;8)对该数据块在数据单元中的位置进行扩展,获得一个不定长数据块;9)计算所述不定长数据块的哈希值,判断该不定长数据块的哈希值是否记录在BH_table或FH_table中,如果是,则该不定长数据块是冗余数据;如果不是,则存储该不定长数据块,并将其哈希值记录在BH_table中;10)将所述数据单元去除该不定长数据块后,所剩下的每个数据块都作为一个数据单元加入数据检测集合,并返回步骤4。2.根据权利要求1所述的一种大数据冗余检测方法,其特征在于:所述的步骤8)中对数据块在数据单元中的位置进行扩展的具体步骤如下:8.1)判断该数据块的前边界是否是该数据单元的第1个字节,如果是,则转步骤8.3,否则继续后续步骤;8.2)获取该数据块的前边界的字节,计算其是否满足预定的条件,如果不满足,则将该数据块的前边界向前移动一个字节,并返回步骤8.1,否则继续执行后续步骤;8.3)判断该数据块的后边界是否为数据单元的最后一个字节,如果是,扩展方法结束,否则继续后续步骤;8.4)获取该数据块后边界的字节,计算其是否满...

【专利技术属性】
技术研发人员:王丹华黄陈蓉范大娟张建德
申请(专利权)人:南京工程学院
类型:发明
国别省市:江苏;32

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

1