HBase - Bloom Filter 简单理解

HBase - Bloom Filter 简单理解

Bloom Filter 是一个过滤器,他提供了一个轻量级的 in-memeory 结构,来减少 Get 操作时读取磁盘文件的数量,只读取包含了要读取的行的文件。能大大的提高读取的效率。

Bloom Filter 是使用位数组来表示的。初始状态的数组全为0。

image

每个 HFile都会由一个与之联结 Bloom Filter位数组。Bloom Filter 会把一个表的行键组成一个集合,然后在分别了每个行键上进行 Hash 计算,Hash 计算的结果映射到数组的某位上,就将该位设为1。如果一个位置多次被置为1,那就还是1。

image

然后使用 Get 方法获取某个行键指定的行数据时,就同样对该行键进行 Hash,如果该 Hash 映射的数组的位置上有0,说明在该行键上一定不是该集合(HFile文件)的元素,如果映射的位置全为1,就说明可能是此集合(HFile文件)的元素。而说可能意思是会有一定的错误率,但使用该错误率来换取大的空间节省与扫描时间的减少,是值得的。

image

参考资料:

[1]http://blog.youkuaiyun.com/lifuxiangcaohui/article/details/39991781
[2]http://www.tuicool.com/articles/Nveyyy
[3]http://blog.youkuaiyun.com/opensure/article/details/46453681

Bloom filter是一种数据结构,它具有可压缩性和高效查询性,因此在分布式数据库、网络缓存、对等网和信息检索等领域引起了越来越多的研究者关注。Bloom filter可以判断一个元素是否存在于一个集合中,而且在判断结果中不会出现漏判的情况,即如果Bloom filter判断一个元素不存在,则该元素一定不存在;但是如果Bloom filter判断一个元素存在,则该元素可能不存在(即存在一定的误判率)。 Bloom filter的应用场景非常广泛。例如,可以使用Bloom filter来解决Redis缓存穿透问题、邮件黑名单过滤、爬虫网址过滤、新闻推荐过滤等。在数据库方面,一些数据库如HBase、RocksDB和LevelDB等内置了Bloom filter,用于判断数据是否存在,从而减少数据库的IO请求。 Bloom filter的原理是基于位数组和多个哈希函数。它使用一个位数组来表示集合,初始时所有的位都被置为0。当要向Bloom filter中插入一个元素时,会将该元素经过多个哈希函数得到多个哈希值,并将对应位置的位设置为1。当要查询一个元素是否存在于Bloom filter中时,同样会经过多个哈希函数得到多个哈希值,并检查对应位置的位是否都为1。如果所有的位都为1,则认为该元素可能存在于集合中;如果至少一个位为0,则该元素一定不存在于集合中。 因此,Bloom filter是一种高效的数据结构,可以用于判断一个元素是否存在于一个集合中。虽然Bloom filter存在一定的误判率,但可以通过调整参数来降低误判率,并且在很多应用场景下具有很高的效率和性能优势。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Bloom Filter研究进展](https://download.youkuaiyun.com/download/weixin_38522323/14847831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [布隆(Bloom Filter)过滤器——全面讲解,建议收藏](https://blog.youkuaiyun.com/qq_41125219/article/details/119982158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值