HBase中的observer分为三类:
MasterObserver、RegionObserver、WALOBserver。
自定义MasterObserver
1、继承BaseMasterObserver类
(是MasterObserver的默认实现类)
2、打成jar包,放到hbase的lib目录下
3、12.4.3.修改hbase的配置文件hbase-site.xml文件
增加如下内容
1 2 3 4
| <property> <name>hbase.coprocessor.master.classes</name> <value>自己写的类的全路径名</value> </property>
|
4、重启HBase集群
在重启集群的时候,使用tail -f …/hbse…master.log文件输出,判断是否出错。
5、代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| * PreCreateTableObserver.java * * Created on: 2016年4月20日 下午3:20:20 * Author: Wayne 13186259527@163.com */ package 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 com.sun.org.apache.commons.logging.Log; import com.sun.org.apache.commons.logging.LogFactory;
* @author Administrator * */ public class PreCreateTableObserver extends BaseMasterObserver{ Log log = LogFactory.getLog(PreCreateTableObserver.class); * @see org.apache.hadoop.hbase.coprocessor.BaseMasterObserver#preCreateTable(org.apache.hadoop.hbase.coprocessor.ObserverContext, org.apache.hadoop.hbase.HTableDescriptor, org.apache.hadoop.hbase.HRegionInfo[]) */ @Override public void preCreateTable( ObserverContext<MasterCoprocessorEnvironment> ctx, HTableDescriptor desc, HRegionInfo[] regions) throws IOException { log.info("\n这段代码被执行了\n"); } }
|
六、测试
在hbase建表后,查看master.log.发现: