上面是一个布隆过滤器的简略工作图。
布隆过滤器的特点:
--能判断该HFile一定没有要查找的数据,但不能判断有。每一个HFile都有一个布隆过滤器。
原理:会维护一个数组,一开始数组元素都是0。
当put数据时,HBase会拿上RowKey经过几个hash算法进行计算,计算出几个位置,把相应的位置改成1,已经是1了就继续保持1。
当get数据时,HBase会拿上RowKey经过几个hash算法进行计算,计算出相应位置,查看这些位置上数值是否都是1,如果满足,则该HFile可能存在要读取的数据,否则不存在。