HBase协处理器----初步认识

HBase协处理器—Coprocessor 

一、简介


    Hbase无法轻易构建“二级索引”,难以执行行求和、计数、排序等操作。
    虽然HBase在数据存储层中集成了MapReduce,能够有效用于数据表的分布式计算。但很多情况下,做一些
    简单的相加或者聚合计算时,如果直接将计算过程放置在server端,能够减少通讯开销。
    从而获得更好的性能提升。如此,便有了协处理器,使其能够轻易建立二次索引、
    复杂过滤器以及访问控制等。


二、协处理器的特性


    1.允许用户执行region级的操作,使用类似于触发器的功能;
    2.允许扩展现有的RPC协议引入自己的调用;
    3.提供一个非常灵活的、可用于建立分布式服务的数据模型;
    4.能够自动化扩展、负载均衡、应用请求路由


三、协处理器类型


    1.Observer
        类似于传统数据库中的触发器,当发生某些事件时会被服务器端调用。
    (1)RegionObserver:用户可以通过它处理数据修改事件,
    它们与表的Regionn紧密关联。对应操作是:put/delete/scan/get
    (2)MasterObserver:用作DDL类型操作,是集群级操作。
    对应操作是:创建表、删除表、修改表。
    (3)WALObsercer:提供控制WAL的钩子函数。
    2.Endpoint
        类似于传统数据库中的存储过程。把用户自定义操作添加到服务器端,
        因此客户端可以调用Endpoint协处理器执行一段服务端的代码,
        并把服务端代码的结果返回给客户端。常用于聚集操作。

2.1 EndPoint的部署

(1)构建脚本描述客户端服务端共同遵循的接口

(2)利用工具把脚本转化成java接口

(3)根据接口,完成client server的代码

(4)把endpoint部署到server端(需要注意的是endpoint是部署在每个region上的,所以得到的
单个的endpoint的结果也是针对单个region的结果,最后需要汇总)

(5)执行client的触发代码,测试是否部署成功


四、协处理器加载及卸载


    1.加载
    (1)通过配置文件静态加载
    在hbase-site.xml中添加如下代码,启动全局aggregation,能够操纵所有表的数据
      

<property> 
    <name>hbase.coprocessor.master.classes</name> 
    <value>此处填写你添加的协处理器的包名加类名</value> 
</property>


    (2)在集群运行时动态加载动态
        启用表aggregation,只对特定的表生效。

方法一:

<property> 
    <name>hbase.coprocessor.user.region.classes</name> 
    <value>此处填写你添加的协处理器的包名加类名</value> 
</property>

方法二:

alter '命名空间:表名',METHOD =>'table_att','coprocessor'=>'|此处填写你添加的协处理器的包名加类名||'

【注】你可以先把你打好的jar包放在hbase的lib目录下,然后重启hbase,在hbase shell中尝试import 你添加的协处理器的包名加类名,如果不报错,再执行动态添加协处理器的操作
    2.卸载

        disable '表名'
        alter '表名',METHOD=>'table_att_unset',NAME=>'coprocessor$1'
        【注】首先你必须知道你要禁用的coprocessor是哪一个,可以在hbase的监控页面上查看
        enable '表名'


五、Coprocessor


    1.Coprocessor
        所有协处理器的父接口,定义了协处理器的执行顺序、生命周期以及状态。
    (1)协处理器的执行顺序
        PRIORITY_HIGHEST,PRIORITY_SYSTEM,PRIORITY_USER,PRIORITY_LOWEST
        优先级依次下降
    (2)协处理器的生命周期
        Coprocessor中定义了start,stop方法,两个方法的参数都是CoprocessorEnvironment。
        这两个方法是被隐式调用的。
    2.CoprocessorEnvironment
        该类提供了访问HBase的版本、Coprocessor版本、协处理器
        优先级等方法。
    3.CoprocessorHost
        协处理器环境和实例的维护,其有相应的子类来完成维护region、master协处理器的实例和环境。

【补充】协处理器不适合任务繁重的操作,如果任务很频繁,可以使用MapReduce定时进行批处理,效率会更高。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值