HBase学习之路(八):HBase协处理器+Hadoop的表操作行为日志监控案例实战

一、协处理的基本概念

  • 使用客户端的API,配合过滤器可以对数据进行限制,使得返回客户端的数据更加精确。如果更近一步,将数据的某些处理流程直接放到服务端执行,然后仅仅返回一个小的处理结果集,类似于在服务端开启一个小型的MapReduce作业来分布式处理数据,这就是HBase的协处理器机制。
  • 协处理器允许用户在region服务器执行自己的代码,即在允许用户执行region级别的操作。协处理器分为两大类:observer与endpoint。observer类似于关系型数据库中的触发器,endpoint则类似于关系型数据库中的存储过程,简单理解就是observer是一个观察者,当某些行为比如插入数据发生或者结束时,可以对应做出何种行为,属于被动调用,而endpoint则类似于调用一个函数,或者自定义的代码,属于主动调用。
  • observer分为三类:
    (1).RegionObserver:用户可以利用这种协处理器处理数据修改事件,与表的region紧密相连,是针对表数据做出修改时的协处理器。
    (2).MasterObserver:可以被用于管理或DDL类型的操作,比如创建、修改表属性等,这是针对集群事件的协处理器。
    (3).WALObserver:供控制WAL的钩子函数。
    不同的observer提供了针对本observer的回调函数,供不同的事件进行回调。
  • endpoint:除了事件处理之外,有时候还需要将用户的自定义操作添加到服务端,endpoint通过远程过程调用来扩展RPC协议,与关系型数据库的存储过程功能相似。

二、基于协处理器的行为表操作行为监控

0.实战内容与思路
  • 本次案例HBase版本是hbase-1.2.0-cdh5.7.0,Hadoop版本是hadoop-2.6.0-cdh5.7.0 开发工具是IDEA2018。
  • 实战内容:在操作HBase的表的过程中,可以对某些操作,比如put,get操作进行监控,一旦发生了此类的行为,就把操作该行为的时间、操作的表名以及操作行为所涉及的RowKey记录到一个HDFS上的文件上。
  • 自定义一个类来继承BaseRegionObserver类,此类已经实现了所有的有关Region级别的所有方法,如果直接实现RegionObserver接口则要实现接口里面的所有方法,非常多,默认情况下继承BaseRegionObserver类没有任何的功能,用户则可以找对应要使用的方法进行重写就可以了。然后将代码打包并提交到HBase的集群中,最后配置HBase并重启即可。
1.在HBase中创建两张表用于测试
  • 在Linux终端输入命令hbase shell进入HBase的终端。执行命令create 'table1','info'来创建一张表名为table1,列族为info的表,再执行命令create 'table2','info'来创建一张表名为table1,列族为info的表:
    在这里插入图片描述
2. 创建普通的Java工程引入Maven支持
  • 完整Maven依赖如下:
    	 <properties>
    	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	    <maven.compiler.source>1.7</maven.compiler.source>
    	    <maven.compiler.target>1.7</maven.compiler.target>
    	    <hadoop.version>2.6.0-cdh5.7.0</hadoop.version>
    	    <hbase.version>1.2.0-cdh5.7.0</hbase.version>
      </properties>
    
      <repositories>
    	    <repository>
    	      <id>cloudera</id>
    	      <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
    	    </repository>
    	  </repositories>
    	
    	  <dependencies>
    	    <dependency>
    	      <groupId>org.apache.hbase</groupId>
    	      <artifactId>hbase-client</artifactId>
    	      <version>${
         hbase.version}</version>
    	    </dependency>
    	
    	    <dependency>
    	      <groupId>org.apache.hbase</groupId>
    	      <artifactId>hbase-server</artifactId>
    	      <version>${
         hbase.version}</version>
    	    </dependency>
    	
    	    <dependency>
    	      <groupId>org.apache.hadoop</groupId>
    	      <artifactId>hadoop-client</artifactId>
    	      <version>${
         hadoop.version}</version>
    	    </dependency>
    	
    	    <dependency>
    	      <groupId>junit</groupId>
    	      <artifactId>junit</artifactId>
    	      
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值