自定义HBase的协处理器(Observer)

时间:2021-04-05 19:07:27

自定义一个Observer...

总共分五步:

1°、继承BaseMasterObserver

案例(当在HBase中创建表的时候在日志中有相关输出):

 import java.io.IOException;

 import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.coprocessor.BaseMasterObserver;
import org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.ObserverContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class MyCheckPrivilegeObserver extends BaseMasterObserver{
/*
* BaseMasterObserver是一个继承了MasterObserver接口的实现类.
* 这个地方用了一个设计模式:适配器模式
* MasterObserver这个接口中定义了N多方法,如果直接implements这个借口
* 就要在类文件中都实现这个类中所有的方法.所以这个地方设计了一个实现了MasterObserver接口
* 所有方法的BaseMasterObserver类.我们只需要再继承BaseMasterObserver就可以了.
*
* MasterObserver中的方法几乎都是以pre 和 post 开头的.
*/
private Logger logger = LoggerFactory.getLogger(MyCheckPrivilegeObserver.class); @Override
public void preCreateTable(
ObserverContext<MasterCoprocessorEnvironment> ctx,
HTableDescriptor desc, HRegionInfo[] regions) throws IOException {
logger.info("---------要创建表了.....are you ok ?-----------");
}
}

2°、打成jar 包,放到hbase 的lib 目录下

3°、修改hbase 的配置文件hbase-site.xml 文件 (hbase-site.xml中的配置就是覆盖hbase-defaul.xml中的配置)

4°、重启HBase 集群 (stop-hbase.sh和start-hbase.sh)

5°、创建表,查看observer 执行情况