您的位置:首页 > 其它

hbase协处理的部署

2015-12-21 00:00 260 查看

1.hbase的Coprocessor的简介

HBase是一个分布式的存储体系,数据按照RowKey分成不同的Region,再分配给RegionServer管理。但是RegionServer只承担了存储的功能,如果Region能拥有一部分的计算能力,从而实现一个HBase框架上的MapReduce,那HBase的操作性能将进一步提升。正是为了解决这一问题,HBase 0.92版本后推出了Coprocessor -- 协处理器,一个工作在Master/RegionServer中的框架,能运行用户的代码,从而灵活地完成分布式数据处理的任务。
Coprocessor包含两个组件,一个是EndPoint(类似关系型数据库的存储过程),用以加快特定查询的响应,另一个就是Observer(类似关系型数据库的触发器)。Observer也分为几个类型,其中RegionObserver提供了一组表数据操作的钩子函数,覆盖了Get、Put、Scan、Delete等操作(通常有pre和post两种情况,表示在操作发生之前或发生之后),我们可以通过重载这些钩子函数,利用RegionServer实现特定的数据处理需求。

2.Coprocessors提供了两种部署方式:

1. 全局部署。把jar包的路径加入HBASE_CLASSPATH并且修改hbase-site.xml,这样Observer会对每一个表都生效。
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.coprocessor. BaseRegionObserver </value>
</property>


2. 单表部署。通过HBase Shell修改表结构,加入coprocessor信息。
a) 进入HBase Shell,disable你希望加载的表
b) 通过以下指令激活Observer:
alter 'table_name', METHOD => 'table_att', 'coprocessor' => ' hdfs://master:9000/HbaseCoprocessor.jar | test.CoprocessorObserverTest |1001'
c) coprocessor对应的格式以
|
分隔,依次为:

jar包的HDFS路径

Observer的主类

优先级(一般不用改)

d) 新安装的coprocessor会自动生成名称:coprocessor + $ + 序号(可通过
describe 'table_name'
查看)
e) 因为一张表可能拥有多个coprocessor,卸载需要输入对应的coprocessor名称,比如:
alter 'table_name', METHOD => 'table_att_unset', NAME=> 'coprocessor$1'

注:创建协处理器时需要把必要的jar,copy完整。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: