`
zhangjijun
  • 浏览: 35886 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

海量数据去重

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

HadoopSphere .MapReduceHDFSHadoop存储HbaseDedoop云计算. 摘要:随着收集到数据体积的激增,去重无疑成为众多大数据玩家面对的问题之一。重复数据删除在减少存储、降低网络带宽方面有着显著的优势,并对扩展性有所帮助。在存储架构中,删除重复数据的常用方法包括哈希、二进制比较和增量差分;而本文专注的是使用MapReduce和HDFS对数据进行去重。
随着存储数据信息量的飞速增长,越来越多的人开始关注存储数据的缩减方法。数据压缩、单实例存储和重复数据删除等都是经常使用的存储数据缩减技术。

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

举个简单的例子:在专门为电信运营商定制的呼叫详单去重应用程序中,我们就可以看到删除重复数据的影子。同样的,对于包含相同数据包的通信网络,我们可以使用这种技术来进行优化。

在存储架构中,删除重复数据的一些常用的方法包括:哈希、二进制比较和增量差分。在 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和存储控制器



由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用于新模型的建立。




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

策略5:结合块技术使用MapReduce

在莱比锡大学开发的一个原型工具Dedoop(Deduplication with Hadoop)中,MapReduce应用于大数据中的实体解析处理,到目前为止,这个工具囊括了MapReduce在重复数据删除技术中最为成熟的应用方式。




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

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

Dedoop还采用了有效的技术来避免多余的配对比较。它要求MR程序必须明确定义出哪个Reduce任务在处理哪个配对比较,这样就无需在多个节点上进行相同的配对比较。


分享到:
评论

相关推荐

    基于Hadoop和HBase的大规模海量数据去重.zip

    在大数据处理领域,基于Hadoop和HBase的大规模海量数据去重是一个常见的需求。Hadoop是Apache开源项目,提供了一个分布式文件系统(HDFS)和MapReduce计算框架,旨在处理和存储海量数据。HBase是建立在Hadoop之上的...

    海量数据去重的Hash与BloomFilter,bitmap1

    在IT领域,尤其是在大数据处理和分布式系统中,数据去重是一项关键任务。本文将深入探讨两种常用的技术:哈希和布隆过滤器,以及它们在处理海量数据时的应用。 哈希算法是数据去重的基础,它能够将任意大小的数据...

    海量数据去重排序bitmap(位图法)在java中实现的两种方法

    海量数据去重排序bitmap(位图法)在java中实现的两种方法 海量数据去重排序是指在大量数据中找到重复出现的元素或去除重复出现的元素,这种问题在面试中经常被考察。针对这种问题,一种常用的解决方法是使用位图法。...

    java海量数据读写优化方案

    对大数据文本文件读取(按行读取)的优化,目前常规的方案有三种,第一...代码提供在RandomAccessFile基础上,整合内部缓冲区,效率会有提高,测试过程中1000w行数据用时1秒,1亿行数据用时103(比1438秒快了13倍左右)

    海量数据的索引与检索系统

    ### 海量数据的索引与检索系统 #### 引言 随着信息技术的快速发展和互联网应用的普及,数据量呈爆炸式增长。特别是在国家安全、商业分析等领域,如何从海量数据中快速准确地提取有价值的信息成为了亟待解决的问题...

    007_hadoop中MapReduce应用案例_1_数据去重

    在IT行业中,Hadoop MapReduce是一种分布式计算框架,广泛用于处理海量数据。在这个"007_hadoop中MapReduce应用案例_1_数据去重"的主题中,我们将深入探讨如何利用MapReduce解决数据去重的问题。这个案例可能涉及到...

    Bitmap海量数据快速查找去重代码示例

    我们可以用bitmap来解决,bitmap基本思想是一位表示一个整数,比如我们有6个数据: 1 7 3 1 5 6 4 假设bitmap容量为8,当插入7时 bit[7]=1,以此类推 bit[3]=1 bit[1]=1 bit[5]=1 …… bit[4]=1 这样我们查询5,...

    feapder多功能的python爬虫框架

    简单易用,内置三种爬虫,可应对各种需求场景 AirSpider 轻量爬虫:学习成本低,可快速上手 Spider 分布式爬虫:支持断点续爬、爬虫报警、...支持断点续爬、数据防丢、监控报警、浏览器渲染下载、海量数据去重等功能

    大厂学院算法与数据结构解析课程大纲1

    此外,课程还涉及位运算和数学方法,包括二进制表示、位运算符、进制转换和位运算在海量数据去重中的应用,通过2的幂、汉明距离、可怜的小猪和鸡蛋掉落等题目,增强学员的计算能力和问题解决能力。 总之,这门课程...

    海量数据处理总结(大量数据处理)

    Bloom Filter是一种用于检验元素是否在一个集合中的概率型数据结构,特别适用于大数据环境下进行快速判断元素是否存在的情况,尤其在数据字典构建、数据去重或集合交集计算方面表现出色。其基本原理是利用位数组和多...

    大数据量,海量数据 处理方法总结

    ### 大数据量,海量数据处理方法总结 在IT领域,特别是大数据分析、数据库管理和算法设计方面,处理海量数据的能力是至关重要的技能之一。本文旨在总结处理大数据量、海量数据的有效方法,涵盖从理论基础到实际应用...

    海量数据面试题整理txt

    以上内容总结了处理海量数据时的关键技术点,包括但不限于数据去重、统计分析、MapReduce应用、IP地址统计、多服务器数据同步与合并等方面。这些技术点不仅涵盖了基础的算法和数据结构,还涉及到了分布式计算、并发...

    海量数据处理:十道面试题与十个海量数据处理方法总结

    ### 海量数据处理知识点详解 #### 一、海量数据处理面试题解析 **1、海量日志数据,提取出某日访问百度次数最多的那个IP** - **问题概述**: 给定一天内的海量日志数据,从中找出访问百度次数最多的IP地址。 - **...

    常见的海量数据处理方法

    本文介绍了几种处理海量数据的有效方法,包括分片存储与去重、使用布隆过滤器、MapReduce框架的应用、统计特定字段、TOP-K问题、精确去重以及高效统计等。这些方法不仅有助于优化存储空间和计算资源,还能大大提高...

    海量数据处理平台体系架构分析

    ### 海量数据处理平台体系架构分析 #### 一、引言 随着互联网技术的飞速发展,人类社会正经历着前所未有的数据爆炸时代。这些数据不仅数量巨大,而且种类繁多,包括文本、图像、视频等多种形式。如何有效地管理和...

    数据去重复1E1000W数据只需30S左右.zip

    在海量数据中,重复数据可能导致错误的分析结果,浪费存储空间,甚至违反法规要求,因此去重是数据清洗过程中的关键步骤。 在描述中提到的30秒内处理1E10条数据,这意味着该工具或方法在性能上有着显著的优势。通常...

    Simhash:使用Simhash对海量文本进行去重

    Simhash是一种基于哈希的近似匹配算法,广泛应用于大数据处理和搜索引擎中,尤其是文本相似度检测和重复内容的去重。它由俄罗斯科学家Vladimir Charikov于2006年提出,其核心思想是将长文本通过一系列变换转化为一个...

Global site tag (gtag.js) - Google Analytics