- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                布隆过滤器及其应用概要1
                    布隆过滤器及其在HBase中的应用
主要内容
什么是布隆过滤器
*
布隆过滤器(Bloom Filter)是一种概率空间高效的数据结构。它与hashmap非常相似,用于检索一个元素是否在一个集合中。它在检索元素是否存在时,能很好地取舍空间使用率与误报比例。正是由于这个特性,它被称作概率性数据结构(probabilistic data structure)
布隆过滤器的基本思想
*
 Bloom-Filter算法的核心思想就是利用多个不同的Hash函数来解决“冲突”。  计算某元素x是否在一个集合中,首先能想到的方法就是将所有的已知元素保存起来构成一个集合R,然后用元素x跟这些R中的元素一一比较来判断是否存在于集合R中;我们可以采用链表等数据结构来实现。但是,随着集合R中元素的增加,其占用的内存将越来越大。试想,如果有几千万个不同网页需要下载,所需的内存将足以占用掉整个进程的内存地址空间。即使用MD5,UUID这些方法将URL转成固定的短小的字符串,内存占用也是相当巨大的.
布隆过滤器优缺点
*
优点:
具有很好的空间和时间效率(只需要哈希表的1/8或1/4的空间复杂度就能完成同样的问题)
不存在false negative (漏报),就是说如果元素存在的话,必能得到正确的结果
缺点:
不能删除已储存的元素
元素越多,false positive rate(误报率)越大,也就说将不存在的元素判定为存在。(常见的补救方法:增加一个白名单,存储可能被误判的元素)
布隆过滤器的空间效率
*
当使用列表或者集合时,空间效率都是重要且显著的,那么布隆过滤器就应当被考虑。
布隆过滤器基础
*
布隆过滤器是N位的位数组,其中N是位数组的大小。它还有另一个参数k,表示使用哈希函数的个数。这些哈希函数用来设置位数组的值。当往过滤器中插入元素x时,h1(x), h2(x), …, hk(x)所对应索引位置的值被置“1”,索引值由各个哈希函数计算得到。注意,如果我们增加哈希函数的数量,误报的概率会趋近于0.但是,插入和查找的时间开销更大,布隆过滤器的容量也会减小。
为了用布隆过滤器检验元素是否存在,我们需要校验是否所有的位置都被置“1”,与我们插入元素的过程非常相似。如果所有位置都被置“1”,那也就意味着该元素很有可能存在于布隆过滤器中。若有位置未被置“1”,那该元素一定不存在
主要内容
布隆过滤器Java实现
*
示例:
为了存储一亿个电子邮件地址
建立一个含有十六亿二进制比特,也就是两亿字节
将十六亿的比特全部设置为0
我们用八个不同的哈希函数,以电子邮件地址为键,算出值,有8个(也许不是数字)
我们再一个哈希函数,分别以这8个值为键,会得到8个数值(范围为1到十六亿的某个数字)
以上一步算出的8个数值为下标,将这8个位置的二进制都设置为1(存储了一个地址)
查询时只需要用类似的方法得到相应电子邮件的8个数值,以其为下标看二进制是否都设置为了1,如果设置为了1,那么这个电子邮件就存在在这个表中。
主要内容
布隆过滤器的应用
*
应用:
垃圾邮件过滤中的黑白名单
爬虫(Crawler)的网址判重模块
HBase ROWKEY查询
HBase布隆过滤器的原理
*
数据块索引提供了一个有效的方法,在访问一个特定的行时用来查找应该读取的HFile的数据块。但是它的效用是有限的。HFile数据块的默认大小是64KB,这个大小不能调整太多
如果你要查找一个短行,只在整个数据块的起始行键上建立索引无法给你细粒度的索引信息。例如,如果你的行占用100字节存储空间,一个64KB的数据块包含(64 * 1024)/100 = 655.53 = ~700行,而你只能把起始行放在索引位上。你要查找的行可能落在特定数据块上的行区间里,但也不是肯定存放在那个数据块上。这有多种情况的可能,或者该行在表里不存在,或者存放在另一个HFile里,甚至在MemStore里。这些情况下,从硬盘读取数据块会带来IO开销,也会滥用数据块缓存。这会影响性能,尤其是当你面对一个巨大的数据集并且有很多并发读用户时 
布隆过滤器允许你对存储在每个数据块的数据做一个反向测试。当某行被请求时,先检查布隆过滤器看看该行是否不在这个数据块。布隆过滤器要么确定回答该行不在,要么回答它不知道
布隆过滤器的代价
*
存储这个额外的索引层次占用额外的空间。布隆过滤器随着它们的索引对象数据增长而增长,所以行级布隆过滤器比列标识符级布隆过滤器占用空间要少。当空间不是问题时,它们可以帮助你榨干系统的性能潜力。  
Bloomfilter是一个列族(cf)级别的配置属性,如果你在表中设置了Bloomfilter,那么HBase会在生成StoreFile时包含一份bloomfilter结构的数据,称其为MetaBlock;
                您可能关注的文档
- 市场营销案例教学概要1.ppt
- 中班健康《花宝宝笑了》概要1.ppt
- 中级实务第2章 图书编辑-李桂福概要1.ppt
- 中级教师讲课及答辩概要1.doc
- 20152016下学期七年级英语课件Unit 9 Self check概要1.ppt
- 中级社工 政策与法规 第十三章概要1.doc
- 中级社工 政策与法规 第十二章概要1.doc
- 中级育婴师复习资料概要1.doc
- 中级茶艺师复习题确定版概要1.doc
- 20152016六安一中高二年级第二学期第一次月考英语试卷概要1.doc
- 20152016学年高一英语人教版必修4双基限时练9Unit3Unit3AtasteofEnglishhumourPart3概要1.doc
- 20150123血管损伤概要1.ppt
- 20152016学年高一英语人教版必修4限时练9 Unit 3 Unit 3 A taste of English humour Part 3 Word版含解析概要1.doc
- 20152016学年高一英语人教版必修4限时练7 Unit 3 Unit 3 A taste of English humour Part 1 Word版含解析概要1.doc
- 师徒结对活动记录表六张概要1.doc
- 20152016学年高一英语试卷概要1.doc
- 20152016学年辽宁省实验中学分校高二12月月考英语试题 word版概要1.doc
- 20152016学年高三英语一模完型填空信息汇总概要1.doc
- 师德与教育法规概要1.ppt
- 帆感动课件概要1.ppt
最近下载
- GB50608-2020 纤维增强复合材料工程应用技术标准.docx VIP
- 高净值人士税务观察:个人股东在并购重组中能否暂免纳税?.pdf
- 《安全保卫工作概述》课件.pptx VIP
- 钢结构施工方案.doc VIP
- 青岛版五四制三年级下册科学课教案.pdf VIP
- 第一章探秘膨松剂(2)教学设计2023-2024学年高一上学期化学鲁科版(2019)必修第一册.docx VIP
- 背压式汽轮机出现负胀差原因与控制措施分析.pdf VIP
- Matlab程序设计与应用课后参考答案.pdf VIP
- 苏霍姆林斯基《给教师的一百条建议》(1~3).pdf VIP
- 矿产勘查学4矿产预测的理论与方法幻灯片.ppt VIP
 原创力文档
原创力文档 
                        

文档评论(0)