作家
登录

巧用MapReduce+HDFS,海量数据去重的五大策略

作者: 来源: 2017-06-04 10:22:13 阅读 我要评论

策略1:只应用HDFS和MapReduce

反复数据删除往往是指清除冗余子文件。不合于紧缩,反复数据删除对于数据本身并没有改变,只是清除了雷同的数据占用的存储容量。反复数据删除在削减存储、降低收集带宽方面有着明显的优势,并对扩大性有所赞助。

举个简单的例子:在专门为电信运营商定制的呼叫详单去重应用法度榜样中,我们就可以看到删除反复数据的影子。同样的,对于包含雷同数据包的通信收集,我们可以应用这种技巧来进行优化。

在存储架构中,删除反复数据的一些常用的办法包含:哈希、二进制比较和增量差分。在HadoopSphere这篇文┞仿中,将专注于若何应用MapReduce和HDFS来清除反复的数据。(下面列出的办法中包含一些学者的实验办法,是以把术语定义为策略比较合适)。

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

应用MapReduce大年夜数据指纹记录集中筛选庄反复记录,并将去反复后的数据指纹表保存回存储控制器。

在一篇名为“工程云体系一一种新鲜的删除反复数据技巧”的论文中,Zhe Sun, Jun Shen, Jianming Young合营提出了一种应用HDFS和Hbase的办法,内容如下:

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

将新的哈希值与现有的值域比较,如不雅新值已经存在于Hbase去反复表中,HDFS会检查链接的数量,如不雅数量不为零时,哈希值对应的计数器将增长1。如不雅数量是零或哈希值袈溱之前的去反复表中不存在,HDFS会请求客户端上传文件并更新文件的逻辑路径。

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

要留意应用这种办法中的一些关键点:

文件级的反复数据删除须要保持索引数量尽可能小,如许可以有高效的查找效力。

MD5和SHA-1须要结合应用大年夜而避免偶发性的碰撞。

策略3:应用HDFS,MapReduce和存储控制器

由Netapp的工程师AshishKathpal、GauravMakkar以及Mathew John三人结合,在一篇名为“在后期处理反复数据删除的分布式反复检测方法”的文┞仿中,提出经由过程应用HadoopMapReduce的反复检测机制来替代Netapp原有的反复检测环节,文中提到的基于反复检测的Hadoop工作流包含如下几个环节:

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

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

数据指纹是指存储体系中文件块经由计算后的哈希索引,平日来说数据指纹要比它代表的数据块体积小的多,如许就可以削减分布式检测时收集中的数据传输量。

策略4:应用Streaming,HDFS,MapReduce

对于Hadoop和Streaming的应用集成,根本上包含两种可能的场景。以IBM Infosphere Streams和BigInsights集成为例,场景应当是:

1. Streams到Hadoop的流程:经由过程控制流程,将Hadoop MapReduce模块作为数据流分析的一部分,对于Streams的操作须要对更新的数据进行检查并去重,并可以验证MapReduce模型的┞俘确性。

众所周知,在数据摄入的时刻对数据进行去反复是最有效的,是以在Infosphere Streams中对于某个特准时光段或者数量的记录会进行去反复,或者辨认出记录的增量部分。接着,经以前重的数据将会发送给Hadoop BigInsights用于新模型的建立。

策略5:结合块技巧应用MapReduce

在莱比锡大年夜学开辟的一个原型对象Dedoop(Deduplication with Hadoop)中,MapReduce应用于大年夜数据中的实体解析处理,到今朝为止,这个对象囊括了MapReduce在反复数据删除技巧中最为成熟的应用方法。

基于实体匹配的分块是指将输入数据按照类似的数据进行语义分块,并且对于雷同块的实体进行限制。

实体解析处理分成两个MapReduce功课:分析功课重要用于统计记录出现频率,匹配功课用于处理负载均衡以及近似度计算。别的,匹配功课采取“贪婪模式”的负载均衡调控,也就是说匹配义务按照义务处理数据大年夜小的降序分列,并做出最小负载的Reduce功课分派。

2. Hadoop到Streams的流程:在这种方法中,Hadoop MapReduce用于移除汗青数据中的反复数据,之后MapReduce模型将会更新。MapReduce模型作为Streams中的一部分被集成,针对mid-stream设备一个操作符(operator),大年夜而对传入的数据进行处理。


  推荐阅读

  HTML 5:这一核心Web技术将走向何方?

【51CTO.com快译】 作为开放式收集平台的主力选手,HTML 5标准正在经历着渐进、改良,甚至根本性的变革。HTML>>>详细阅读


本文标题:巧用MapReduce+HDFS,海量数据去重的五大策略

地址:http://www.17bianji.com/lsqh/35547.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)