自定义一个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.sh和start-hbase.sh)
5°、创建表,查看observer 执行情况
本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5583144.html,如需转载请自行联系原作者