面试题答案
一键面试布隆过滤器基本原理
- 数据结构:布隆过滤器是一个由 m 位组成的位数组,初始值全部为 0 。同时,它还需要 k 个相互独立的哈希函数,每个哈希函数都能将输入元素映射到 0 到 m - 1 的范围内。
- 构建过程:当向布隆过滤器中添加一个元素时,该元素会依次经过 k 个哈希函数的计算,得到 k 个哈希值,这些哈希值对应位数组中的位置会被置为 1 。
- 判断元素是否存在:当判断一个元素是否存在时,该元素同样经过 k 个哈希函数计算得到 k 个哈希值,检查这些哈希值对应的位数组位置是否都为 1 。如果都为 1 ,则认为该元素可能存在;如果有任何一个位置为 0 ,则该元素一定不存在。需要注意的是,布隆过滤器存在误判率,即可能把不存在的元素误判为存在,但不会把存在的元素误判为不存在。
在Hbase中的作用场景
- 减少磁盘I/O:HBase 中存储的数据量大,查询时可能涉及大量磁盘I/O 。布隆过滤器可以在内存中快速判断某个 key 可能存在于哪个 Region 或者 HFile 中,减少不必要的磁盘读取操作,提升查询性能。
- 快速过滤:在进行全表扫描或者范围查询时,利用布隆过滤器可以快速过滤掉那些肯定不存在目标数据的存储单元,从而提高查询效率。