hbase协处理的部署


1.hbaseCoprocessor的简介

      HBase是一个分布式的存储体系,数据按照RowKey分红不一样的Region,再分配给RegionServer管理。可是RegionServer只承担了存储的功能,若是Region能拥有一部分的计算能力,从而实现一个HBase框架上的MapReduce,那HBase的操做性能将进一步提高。正是为了解决这一问题,HBase 0.92版本后推出了Coprocessor -- 协处理器,一个工做在Master/RegionServer中的框架,能运行用户的代码,从而灵活地完成分布式数据处理的任务。java

      Coprocessor包含两个组件,一个是EndPoint(相似关系型数据库的存储过程),用以加快特定查询的响应,另外一个就是Observer(相似关系型数据库的触发器)。Observer也分为几个类型,其中RegionObserver提供了一组表数据操做的钩子函数,覆盖了GetPutScanDelete等操做(一般有prepost两种状况,表示在操做发生以前或发生以后),咱们能够经过重载这些钩子函数,利用RegionServer实现特定的数据处理需求。数据库


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

1.    全局部署。把jar包的路径加入HBASE_CLASSPATH而且修改hbase-site.xml,这样Observer会对每个表都生效。apache

<property>
<name>hbase.coprocessor.region.classes</name>
 <value>org.apache.hadoop.hbase.coprocessor. BaseRegionObserver </value>
</property>


2.    单表部署。经过HBase Shell修改表结构,加入coprocessor信息。框架

a)      进入HBase Shelldisable你但愿加载的表分布式

b)     经过如下指令激活Observer函数

alter 'table_name', METHOD => 'table_att', 'coprocessor' => ' hdfs://master:9000/HbaseCoprocessor.jar | test.CoprocessorObserverTest |1001'oop

c)      coprocessor对应的格式以|分隔,依次为:post

  •         jar包的HDFS路径性能

  •         Observer的主类spa

  •         优先级(通常不用改)

d)     新安装的coprocessor会自动生成名称:coprocessor + $ + 序号(可经过describe 'table_name'查看)

e)     由于一张表可能拥有多个coprocessor,卸载须要输入对应的coprocessor名称,好比:

alter 'table_name', METHOD => 'table_att_unset', NAME=> 'coprocessor$1'

注:建立协处理器时须要把必要的jar,copy完整。

相关文章
相关标签/搜索