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.发现:
