1、简单说一下布隆过滤器的原理
布隆过滤器的核心是一个超大位数组(或者叫位向量)和几个哈希函数。
检测情况有两种:
1. 一定不在集合中
2. 不一定在集合中
Step1:将位数组初始化,每位都设为0
Step2:对集合里的每一个元素通过n个哈希函数进行映射。映射的哈希值对应位数组上的一个点,将该位置标记为1
Step3:查询元素是否在集合中的时候,同样的方法将该元素通过哈希函数映射到位数组的各个点上
Step4:只要有一个点不为1,则判断该元素一定不存在集合中。反之,如果各个点都为1,则元素可能在集合中
2、rowkey的设计原则是?
1. 唯一性(避免出现覆盖)
2. 长度原则(避免排序问题)
长度统一
Rowkey建议是8的倍数,不要超过16个字节。越短越好省磁盘和内存空间
3. 散列原则(避免了热点问题)
-- Reverse反转
手机号
-- Salting(加盐)
原有的rowkey前加字符串
-- hash散列或者Mod
通过算法获取字符集。然后再原有的rowkey加前缀
3、什么是二级索引表
二级索引的本质就是建立各列值与行键之间的映射关系
单元格的值作为二级索引表的rowkey,原表的rowkey作为数据存储到二级索引表中
4、hbase的协处理器分几大类,作用是什么?
Observer 类似于传统数据库中的触发器
-- RegionObserver:针对Region的观察者,可以监听关于Region的操作
-- RegionServerObserver:针对RegionServer的观察者,可以监听关于RegionServer的操作
-- WALObserver:针对WAL的观察者,可以监听关于WAL的操作
-- MasterObserver:针对Master的观察者,可以监听关于Master的操作
endpoint 类似于传统数据库中的存储过程
-- Observer 允许集群在正常的客户端操作过程中可以有不同的行为表现
-- Endpoint 允许扩展集群的能力,对客户端应用开放新的运算命令
-- Observer 类似于 RDBMS 中的触发器,主要在服务端工作
-- Endpoint 类似于 RDBMS 中的存储过程,主要在服务端工作
-- Observer 可以实现权限管理、优先级设置、监控、ddl 控制、二级索引等功能
-- Endpoint 可以实现 min、max、avg、sum、distinct、group by 等功能
5、使用协处理器完成下列逻辑
当我们向表hello中插入单元格时,如果name单元格的value值是michael,那么就在另外一个单元格message里面插入hello michael。 列族为base.
put 'hello','rk1001','base:name','michael'
base:message','hello michael'
package com.hbase.coprocessor;
import com.hbase.util