Hbase中的BloomFilter(布隆过滤器)
(1) Bloomfilter在hbase中的作用
Hbase利用bloomfilter来提高随机读(get)的性能,对于顺序读(scan)而言,设置Bloomfilter是没有作用的(0.92版本以后,如果设置了bloomfilter为rowcol,对于执行了qualifier的scan有 一定的优化)
(2) Bloomfilter在hbase中的开销
Bloomfilter是一个列族(cf)级别的配置属性,如果在表中设置了bloomfilter,那么hbase会在生成storefile时包含一份bloomfilter结构的数据,称其为MetaBlock与DataBlock(真实的KeyValue 数据)一起由LRUBlockCache维护。所以开启bloomfilter会有一定的存储及内存cache开销。
(3) Hbase中的bloomfilter的类型及使用
a) ROW,根据KeyValue中的row来过滤storefile。举例:(该情况可以针对列族和列都相同,只有rowkey不同的情况下,可以使用ROW来过滤。)
如:假设有2个storfile文件sf1和sf2,
sf1包含kv1(r1 cf:q1 v) 、kv2(r2 cf:q1 v)
sf2包含kv3(r3 cf:q2 v) 、kv4(r4 cf:q2 v)
如果设置了cf属性的bloomfilter为ROW,那么get(r1)时会过滤sf2,get(r3)时会过滤sf1.
b) ROWCOL,根据KeyValue中的row+qualifier来过滤storefile。举例:(该情况是针对列族相同,列和rowkey不同的情况,可以用ROWCOL来过滤。)
如:假设有2个storefile文件sf1和sf2,
Sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)
Sf2包含kv3(r1 cf:q2 v)、kv4(r2 cf:q2 v)
如果设置了cf属性中的bloomfilter为ROW,无论get(r1,q1)还是get(r1,q2)都会读取sf1+sf2;而如果设置了cf属性中的bloomfilter为ROWCOL,那么get(r1,q1)就会过滤 sf2,get(r1,q2)就会过滤sf1。
(4)ROWCOL与ROW对比
i. ROWCOL只对指定列(Qualifier)的随机读取Get有效,如果应用中的随机读取Get只含有row,而且没有指定读取哪个qualifier,那么设置ROWCOL是没有效果的,这种场景就应该使用ROW。
ii. 如果随机读中指定的列(Qualifier)的数目大于等于2,在0.9版本中ROWCOL是无效的,0.9版本以后是有效的。
iii. 如果同一个row多个列的数据在应用上是同一时间put的,那么ROW与ROWCOL的效果近似相同,而ROWCOL只对指定了列的随机读才会有效,所以设置为ROW更佳。
iv. ROWCOL与ROW只在名称上有联系,ROWCOL并不是ROW的扩展,不能取代ROW。
Hbase中的BloomFilter(布隆过滤器)的更多相关文章
- 第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中
第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详 ...
- 三十七 Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中
Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如 ...
- 将bloomfilter(布隆过滤器)集成到scrapy-redis中
Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如 ...
- BloomFilter(布隆过滤器)
原文链接:http://blog.csdn.net/qq_38646470/article/details/79431659 1.概念: 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保 ...
- BloomFilter布隆过滤器
BloomFilter 简介 当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1.检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些 ...
- BloomFilter布隆过滤器使用
从上一篇可以得知,BloomFilter的关键在于hash算法的设定和bit数组的大小确定,通过权衡得到一个错误概率可以接受的结果. 算法比较复杂,也不是我们研究的范畴,我们直接使用已有的实现. go ...
- 使用BloomFilter布隆过滤器解决缓存击穿、垃圾邮件识别、集合判重
Bloom Filter是一个占用空间很小.效率很高的随机数据结构,它由一个bit数组和一组Hash算法构成.可用于判断一个元素是否在一个集合中,查询效率很高(1-N,最优能逼近于1). 在很多场景下 ...
- Redis解读(4):Redis中HyperLongLog、布隆过滤器、限流、Geo、及Scan等进阶应用
Redis中的HyperLogLog 一般我们评估一个网站的访问量,有几个主要的参数: pv,Page View,网页的浏览量 uv,User View,访问的用户 一般来说,pv 或者 uv 的统计 ...
- Spark布隆过滤器(bloomFilter)
数据过滤在很多场景都会应用到,特别是在大数据环境下.在数据量很大的场景实现过滤或者全局去重,需要存储的数据量和计算代价是非常庞大的.很多小伙伴第一念头肯定会想到布隆过滤器,有一定的精度损失,但是存储性 ...
随机推荐
- 161214、oracle查询表信息
1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.ind ...
- TextBox
一.聚焦: private void FrmOnlineChargeMoney_Paint(object sender, PaintEventArgs e) { edtAuthCode.SelectA ...
- C# 使用 Abot 实现 爬虫 抓取网页信息 源码下载
下载地址 ** dome **
- jQuery右键菜单contextMenu使用实例
在最近项目中需要频繁的右键菜单操作.我采用了contextMenu这款jQuery插件. 参考网址:http://www.jb51.net/article/58709.htm 官网demo http: ...
- C中字符串的几种定义方法及说明
在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 1.字符串常量 即:位于一对双括号中的任何字符.双引号里的字符加上编译器自动提供的结束标志\0字符,作为 一个字符串存储在内存中 ...
- -webkit-transform:scale(1.04)放大缩小效果
<p>[鼠标移动进去图片放大一倍效果:运用了-webkit-transform:scale(1.04)效果]</p> 如图:鼠标移动上去的时候图片放大一倍的效果, <!D ...
- mac攻略(四) -- brew使用
1.介绍 brew是一个mac新用户需要了解的必备命令,它是mac下的软件包管理软件,类似centos下的yum.ubuntu下的apt-get,免去了自己手动编译安装的不方便. 很多时候作为一个用户 ...
- rmi远程调用
1.在服务器端程序中的spring-servlet.xml中添加 <bean id="userService" class="org.springframework ...
- [bzoj1103][POI2007]大都市meg(树状数组+dfs序)
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2031 Solved: 1069[Submit][Sta ...
- mysql导入导出数据中文乱码解决方法小结
linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqld ...