前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【单点】每日突破,HBase布隆过滤器

【单点】每日突破,HBase布隆过滤器

作者头像
十里桃花舞丶
发布2021-09-10 11:08:45
6830
发布2021-09-10 11:08:45
举报
文章被收录于专栏:桥路_大数据桥路_大数据

HBase布隆过滤器

问:请描述HBase的布隆过滤器

答:

  • 布隆过滤器可以用于快速判断一个数据是否存在一个集合中。它的原理是,创建一个长度为n的二进制数组,初始状态下值均为0;然后将当前集合中的数据进行哈希计算后,将数组中的对应位置变为1。比如,字符串"hbase"经过哈希计算后,值为3,那么将原数组[0,0,0,0,0]更改为[0,0,0,1,0]。那么,要查询的数据也会先经过哈希计算,在数组中快速寻找,如果已经置为1,说明数据可能在这个集合中,如果为0,说明一定不在集合中。
  • 所以布隆过滤器是一种粗略的过滤手段。但因为它算法简单,使用的存储开销小,在大数据场景中是一种很不错的优化方式。
  • 而且为了增加数据查询的准确性,一般会使用多个不同的哈希函数进行计算。比如,h1、h2、h3,这样会得到3个不同的位置,同时将其置为1。如果在查询数据时,同时发现这3个位置均为1,则说明很大的概率可以在当前集合中找到期望的数据,否则一定不在当前集合中。
  • 从HBase 0.96以来,默认启用基于行的Bloom Filters。在查询某行数据时,使用布隆过滤器可以快速排除一些HFile,以减少数据的读取量。
  • 当然HBase除了默认的行级别(row)的布隆过滤器,也支持行+列级别(row+column)的。
  • 如果经常扫描整行数据,可以使用row方式的布隆过滤器,此时也可以加快行+列的查询速度。
  • 如果经常查询某行某列的数据,可以使用row+column方式的布隆过滤器,但它不会加快对整行数据的查询效率。而且除非这一行只有一列,否则row+column的布隆过滤器会占用较多的存储空间。所以,当每个数据至少为几千字节时,它的效果最好。
  • 可以使用命令,在列族上开启布隆过滤器。
代码语言:javascript
复制
create 'mytable',{NAME => 'colfam1', BLOOMFILTER => 'ROWCOL'}
  • 布隆过滤器存储在HFile的元数据中,当Region被部署到某个RegionServer中时,HFile会被读取,将布隆过滤器加载到内存中。
  • 布隆过滤器开启后,在生产环境中是否有效,此时可以查看RegionServer中的blockCacheHitRatio值,如果开启后值增加,说明是正优化。
  • 以上内容部分参考自官网,对应HBase 2.3版本。

今天的单点,你是否get到了呢?每日单点,用5分钟收获一点!今天你打卡了没?


后话

如果有帮助的,记得点赞、关注。在公众号《数舟》中,可以免费获取专栏《数据仓库》配套的视频课程、大数据集群自动安装脚本,并获取进群交流的途径。

我所有的大数据技术内容也会优先发布到公众号中。如果对某些大数据技术有兴趣,但没有充足的时间,在群里提出,我为大家安排分享。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HBase布隆过滤器
  • 后话
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档