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

自定义一个Observer...

总共分五步:

1°、继承BaseMasterObserver 

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

 1 import java.io.IOException;
 2 
 3 import org.apache.hadoop.hbase.HRegionInfo;
 4 import org.apache.hadoop.hbase.HTableDescriptor;
 5 import org.apache.hadoop.hbase.coprocessor.BaseMasterObserver;
 6 import org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment;
 7 import org.apache.hadoop.hbase.coprocessor.ObserverContext;
 8 import org.slf4j.Logger;
 9 import org.slf4j.LoggerFactory;
10 
11 public class MyCheckPrivilegeObserver extends BaseMasterObserver{
12     /*
13      * BaseMasterObserver是一个继承了MasterObserver接口的实现类.
14      * 这个地方用了一个设计模式:适配器模式
15      * MasterObserver这个接口中定义了N多方法,如果直接implements这个借口
16      * 就要在类文件中都实现这个类中所有的方法.所以这个地方设计了一个实现了MasterObserver接口
17      * 所有方法的BaseMasterObserver类.我们只需要再继承BaseMasterObserver就可以了.
18      * 
19      * MasterObserver中的方法几乎都是以pre 和 post 开头的.
20      */
21     private Logger logger = LoggerFactory.getLogger(MyCheckPrivilegeObserver.class);
22     
23     @Override
24     public void preCreateTable(
25             ObserverContext<MasterCoprocessorEnvironment> ctx,
26             HTableDescriptor desc, HRegionInfo[] regions) throws IOException {
27         logger.info("---------要创建表了.....are you ok ?-----------");
28     }
29 }

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

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

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

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

原文地址:https://www.cnblogs.com/DreamDrive/p/5583144.html