HBase 协处理器 概念 加载方式

 

1.协处理器

HBase 0.92版本后推出了Coprocessor-协处理器,能够轻易 建立二级索引、复杂过滤器以及访问控制等。
系统协处理器可以全局导入region server上的所有数据表,表协处理器即是用户可以指定一张表使用协处理器。协处理器框架为了更好支持其行为的灵活性,提供了两个不同方面的插件。 一个是观察者(observer),类似于关系型数据库的触发器。另一个终端(endpoint),动态的终端有点像存储过程。
  协处理器的加载方式有两种,我们称之为静态加载方式(Static Load)和动态加载方式(Dynamic Load)。静态加载的协处理器称之为 System Coprocessor,动态加载的协处理器称之为 Table Coprocessor。
 

2.观察者(Observer)

观察者的设计意图是允许用户通过插入代码来重载协处理器框架的upcall方法,而具体的事件触发的callback方法由HBase的核心代码来执行。协处理器框架处理所有的callback调用细节,协处理器自身只需要插入添加或者改变的功能。他提供了三种观察者接口:
  • RegionObserver:提供客户端的数据操纵事件钩子:Get、Put、Delete、Scan等
  • WALObserver:提供WAL相关操作钩子。
  • MasterObserver:提供DDL类型的操作钩子。如创建、删除、修改数据表等。
这些接口可以同时使用在同一个地方,按照不同优先级顺序执行,用户可以任意基于协处理器实现复杂的HBase功能区。
 

3.静态加载

  通过修改hbase-site.xml这个文件来实现,启动全局aggregation,能过操纵所有的表上的数据。只需要添加如下代码:
<property>
    <name>hbase.coprocessor.user.region.classes</name>   
    <value>org.apache.hadoop.hbase.coprocessor.AggregateImplementation</value>
</property>
为所有table加载了一个class,可以用","分割加载多个class
 

4.动态加载

启用表aggregation,只对特定的表生效。通过HBase Shell来实现。
(1)停用表
disable 'guanzhu'
 
(2)添加协处理器
alter 'guanzhu', METHOD => 'table_att', 'coprocessor' => 'hdfs://myha01/hbase/guanzhu.jar|com.study.hbase.cp.HbaseCoprocessorTest|1001|'
 
(3)启用表  
enable 'guanzhu'
 

5.协处理器卸载

disable 'mytable'
alter 'mytable',METHOD=>'table_att_unset',NAME=>'coprocessor$1'
enable 'mytable'
把Java项目打包为jar包,上传到HDFS的特定路径
进入HBase Shell,disable你希望加载的表
具体相关参数:
通过alter 命令激活Observer coprocessor对应的格式以|分隔,依次为:
- jar包的HDFS路径
- Observer的主类
- 优先级(一般不用改)
- 参数(一般不用改)
- 新安装的coprocessor会自动生成名称:coprocessor + $ + 序号(通过describe table_name可查看)
绑定之后如果在执行的过程中有报错或者同步不过去,可以到hbase的从节点上的logs目录下,查看 hbase-roor-regionserver-slave*.log文件。因为协作器是部署在regionserver上的,所以要到从节点上面去看日志,而不是master节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值