重复数据删除往往是指消除冗余子文件。不同于压缩,重复数据删除对于数据本身并没有改变,只是消除了相同的数据占用的存储容量。重复数据删除在减少存储、降低网络带宽方面有着显著的优势,并对扩展性有所帮助。

跟着存储数据信息量的飞速添加,越来越多的人开端重视存储数据的减缩办法。数据紧缩、单实例存储和重复数据删去等都是常常运用的存储数据减缩技能。

重复数据删去往往是指消除冗余子文件。不同于紧缩,重复数据删去关于数据自身并没有改动,仅仅消除了相同的数据占用的存储容量。重复数据删去在削减存储、下降网络带宽方面有着明显的优势,并对扩展性有所协助。

举个简略的比如:在专门为电信运营商定制的呼叫详单去重运用程序中,咱们就能够看到删去重复数据的影子。相同的,关于包括相同数据包的通讯网络,咱们能够运用这种技能来进行优化。

在存储架构中,删去重复数据的一些常用的办法包括:哈希、二进制比较和增量差分。在HadoopSphere这篇文章中,将专心于怎么运用MapReduce和HDFS来消除重复的数据。(下面列出的办法中包括一些学者的试验办法,因而把术语界说为战略比较适宜)。

战略1:只运用HDFS和MapReduce

Owen O’Malley在一个论坛的帖子中主张运用以下办法:

让你的前史数据依照MD5值进行排序。 运转一个MapReduce的作业,将你的新数据依照MD5进行排序。需求留意的是:你要做一切数据的全体排序,但因为MD5是在整个密钥空间中是均匀分布的,排序就变得很简单。

基本上,你选择一个reduce作业的数量(如256),然后取MD5值的前N位数据来进行你的reduce作业。因为这项作业只处理你的新数据,这是非常快的。 接下来你需求进行一个map-side join,每一个兼并的输入分块都包括一个MD5值的规模。RecordReader读取前史的和新的数据集,并将它们依照必定办法兼并。(你能够运用map-side join库)。你的map将新数据和旧数据兼并。这儿仅仅是一个map作业,所以这也非常快。

当然,假如新的数据满足小,你能够在每一个map作业中将其读入,而且坚持新记载(在RAM中做了排序)在适宜的数量规模内,这样就能够在RAM中履行兼并。这能够让你防止为新数据进行排序的过程。相似于这种兼并的优化,正是Pig和Hive中对开发人员躲藏的很多细节部分。

战略2:运用HDFS和Hbase

在一篇名为“工程云体系中一种新颖的删去重复数据技能”的论文中,Zhe Sun, Jun Shen, Jianming Young一起提出了一种运用HDFS和Hbase的办法,内容如下:

运用MD5和SHA-1哈希函数核算文件的哈希值,然后将值传递给Hbase

将新的哈希值与现有的值域比较,假如新值现已存在于Hbase去重复表中,HDFS会查看链接的数量,假如数量不为零时,哈希值对应的计数器将添加1。假如数量是零或哈希值在之前的去重复表中不存在,HDFS会要求客户端上传文件并更新文件的逻辑途径。

HDFS将存储由用户上传的源文件,以及相应的链接文件,这些链接文件是主动生成的。链接文件中记载了源文件的哈希值和源文件的逻辑途径。

要留意运用这种办法中的一些要害点:

文件级的重复数据删去需求坚持索引数量尽或许小,这样能够有高效的查找功率。

MD5和SHA-1需求结合运用然后防止偶发性的磕碰。

战略3:运用HDFS,MapReduce和存储操控器

巧用MapReduce+HDFS,海量数据去重的五大战略(mapreduce和hdfs)  MapReduce HDFS 存储 Hbase Dadoop 第1张

由Netapp的工程师AshishKathpal、GauravMakkar以及Mathew John三人联合,在一篇名为“在后期处理重复数据删去的分布式重复检测办法”的文章中,提出经过运用HadoopMapReduce的重复检测机制来代替Netapp原有的重复检测环节,文中说到的根据重复检测的Hadoop工作流包括如下几个环节:

将数据指纹(Fingerprint)由存储操控器迁移到HDFS

生成数据指纹数据库,并在HDFS上***存储该数据库

运用MapReduce从数据指纹记载会集筛选出重复记载,并将去重复后的数据指纹表保存回存储操控器。

数据指纹是指存储体系中文件块经过核算后的哈希索引,一般来说数据指纹要比它代表的数据块体积小的多,这样就能够削减分布式检测时网络中的数据传输量。

战略4:运用Streaming,HDFS,MapReduce

关于Hadoop和Streaming的运用集成,基本上包括两种或许的场景。以IBM Infosphere Streams和BigInsights集成为例,场景应该是:

1. Streams到Hadoop的流程:经过操控流程,将Hadoop MapReduce模块作为数据流剖析的一部分,关于Streams的操作需求对更新的数据进行查看并去重,并能够验证MapReduce模型的正确性。

众所周知,在数据摄入的时分对数据进行去重复是最有用的,因而在Infosphere Streams中关于某个特定时间段或许数量的记载会进行去重复,或许识别出记载的增量部分。接着,经曩昔重的数据将会发送给Hadoop BigInsights用于新模型的树立。

巧用MapReduce+HDFS,海量数据去重的五大战略(mapreduce和hdfs)  MapReduce HDFS 存储 Hbase Dadoop 第2张

2. Hadoop到Streams的流程:在这种办法中,Hadoop MapReduce用于移除前史数据中的重复数据,之后MapReduce模型将会更新。MapReduce模型作为Streams中的一部分被集成,针对mid-stream装备一个操作符(operator),然后对传入的数据进行处理。

战略5:结合块技能运用MapReduce

在莱比锡大学开发的一个原型东西Dedoop(Deduplication with Hadoop)中,MapReduce运用于大数据中的实体解析处理,到目前为止,这个东西包括了MapReduce在重复数据删去技能中最为老练的运用办法。

巧用MapReduce+HDFS,海量数据去重的五大战略(mapreduce和hdfs)  MapReduce HDFS 存储 Hbase Dadoop 第3张

根据实体匹配的分块是指将输入数据依照相似的数据进行语义分块,而且关于相同块的实体进行限制。

实体解析处理分红两个MapReduce作业:剖析作业首要用于核算记载呈现频率,匹配作业用于处理负载均衡以及近似度核算。别的,匹配作业选用“贪婪形式”的负载均衡调控,也就是说匹配使命依照使命处理数据巨细的降序摆放,并做出最小负载的Reduce作业分配。

Dedoop还选用了有用的技能来防止剩余的配对比较。它要求MR程序有必要清晰界说出哪个Reduce使命在处理哪个配对比较,这样就无需在多个节点进步行相同的配对比较。

转载请说明出处
知优网 » 巧用MapReduce+HDFS,海量数据去重的五大战略(mapreduce和hdfs)

发表评论

您需要后才能发表评论