Hbase的Coprocessor应用(1)

来源:互联网 发布:网络舆情分析 编辑:程序博客网 时间:2024/05/17 05:58

基础知识(转自网络):

hbase Coprocessor是很多人对hbase-0.92的重大期待之一。    现在hbasecoprocessor有两种完全不同的实现,分别是observer模式与endpoint模式,它们分别对应20002001两个issue。我们可以将observer模式看成数据库中的触发器,而endpoint可以看成是存储过程。

  关于coprocessor我们可以从类继承关系上看到,如下图所示:

  

Hbase的Coprocessor应用(1) - SNRY - SNRE的博客
共有三个Observer对象,即MasterObserverRegionObserverWALObserver。它们的工作原理类似于钩子函数,在真实的函数实现前加入pre(),实现后加入post()方法,来实现对操作进行一些嵌入式的改变。
  • hbase coprocessor的实现分为observerendpoint,其中observer类似于触发器,主要在服务端工作,而endpoint类似于存储过程,主要在client端工作
  • observer可以实现权限管理、优先级设置、监控、ddl控制、二级索引等功能,而endpoint可以实现minmasavgsum等功能
  • coprocessor可以动态加载
具体应用:
最近几周一直在通过MasterObserver、RegionObserver做访问权限控制,经历不少的尝试、弯路,算是对其有了初步的使用的了解,总结如下:

1、新建类继承实现MasterObserver/RegionObserver接口(或继承BaseMasterObserver/BaseRegionObserver类)

2、复写一定的pre 、post方法来完成目的

3、导出jar包(可以通过Eclipse导出)

4、修改hbase/conf/hbase-env.sh 中的HBASE_CLASSPATH属性,添加3步中jar包位置。如:

export HBASE_CLASSPATH=/home/snre/hadoop-1.0.3/conf:/home/snre/hbaseclient.jar

5、修改hbase/conf/hbase-site.xml文件,添加

<property><name>hbase.coprocessor.master.classes</name> <value>rong.accesscontrol.MasterAC</value></property><property><name>hbase.coprocessor.user.region.classes</name> <value>rong.accesscontrol.RegionAC</value></property>

value项与包中类位置有关。
hbase.coprocessor.master.classes

对应与MasterObserver。
hbase.coprocessor.user.region.classes/hbase.coprocessor.region.classes

对应RegionObserver,有user的对-ROOT-,.META.不适用。

我在使用过程中,如果配置成hbase.coprocessor.region.classes属性,会出现很多错误:(1)无法bin/stop-hbase.sh停止Hmaster(2)报错:region is not online:-ROOT-, ,0  等。原因我想大概如:http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/26465 。但还没有找到解决办法!

6、启动即可

7、还有很多问题有待补充。
原创粉丝点击