在光晕过滤器HBase中如何设定
布隆过滤器
布鲁姆是个人,发明了布鲁姆算法。 基于布隆算法实现的组件称为布隆过滤器! 此组件通常用作过滤器!过滤功能:在海量的数据中,以极高的效率和性能,判断一个数据是否存在于收藏中!作用:布隆过滤器只能确定一个数据一定不存在于集合中,或者可能存在于集合中。误判:布隆过滤器判断数据可能存在,实际扫描后发现不存在。 这有存在的概率!布隆过滤器是可以提升读的性能!存在误判率!
那么,我画个图来说明
说明R3在集合中一定不存在
表示R4可能存在
在HBase中如何在1.HBase中设定基于列族的过滤器?
2.HBase支持两种类型的光晕过滤器。 row|row col http://www.Sina.com/:布隆过滤器在计算时使用每行的rowkey作为参数进行判断!ROW
info------------info1
infostorefile1:(R1,info:age,20 ),) r2,info:age,20 ) )。
info1storefile2:(R3,info1:age,20 ),) r4,info1:age,20 ) ) )。
查询r1时,如果命中,则判断storefile2中一定没有r1的数据,可能在storefile1中!举例::布隆过滤器在计算时将每行的rowkey和column一起用作参数进行判断!
示例:
info------------info1
infostorefile1:(R1,info:age,20 ),) r2,info:age,20 ) )。
info1storefile2:(R3,info1:age,20 ),) r4,info1:age,20 ) ) )。
如果在检查rowkey=r1并仅检查info:age=20列时命中,则判断storefile2中没有此数据,storefile1中可能有!ROWCOL
在旧版本中,只有get操作使用光晕过滤器,不能使用扫描!
1.x之后,扫描也可以使用布隆过滤器,稍微在起点作用! http://www.Sina.com/http://www.Sina.com /
执行get‘t1’、‘R1’
扫描具有r1的region的所有列族的memstore,扫描memstore时,首先用布隆过滤器判断r1是否存在,如果不存在,可能不扫描就存在。 重新扫描!
扫描Storefile时,如果在Storefile中,r1所在的block已缓存在blockcache中,则直接扫描blockcache。 扫描blockcache时,首先使用布隆过滤器判断r1是否存在,如果不存在则不扫描。 可能存在。 重新扫描!