HBase 协处理器总结

本文介绍了HBase的协处理器,包括观察者Observer和终端Endpoint的概念及应用,如二级索引的实现。协处理器允许在Region Server上执行自定义代码,提供类似数据库触发器的功能,提高运算效率。同时,文章展示了如何编写、加载和卸载协处理器的步骤。
摘要由CSDN通过智能技术生成

HBase 协处理器总结

1. 协处理器是什么

1.1 概述

  1. 理解为服务端的拦截器,可根据需求确定拦截点,再重写这些拦截点对应的方法
  2. 协处理器允许在region server上运行自己的代码,更准确地说是允许用户执行 region级的操作,并且可以使用与RDBMS中触发器(trigger)类似的功能
  3. 协处理器分两种类型,系统协处理器可以全局导入region server上的所有数据表,表协处理器即是用户可以指定一张表使用协处理器。协处理器框架为了更好支持其行为的灵活性,提供了两个不同方面的插件。
  • 一个是观察者(observer),类似于关系数据库的触发器。
  • 另一个是终端(endpoint),动态的终端有点像存储过程。Observer : 在region server上执行,而且是自动执行Endpoint: 在region server上执行,但是要由客户端通过请求来调用执行
    在这里插入图片描述

1.2 观察者Observers

  1. RegionObserver:针对Region的观察者,可以监听关于Region的 操作。
  2. RegionServerObserver:针对RegionServer的观察者,可以监听 整个RegionServer的操作。
  3. MasterObserver:针对Master的观察者,可以监听Master进行的 DDL操作。
  4. WALObserver:针对WAL的观察者,可以监听WAL的所有读写操 作。
  5. BulkLoadObserver:BulkLoad是采用MapReduce将大量数据快速 地导入HBase的一种方式。BulkLoadObserver可以监听BulkLoad行为。
  6. EndpointObserver:可以监听EndPoint的执行过程。在此我并没有列出这些接口的所有基本实现类,只列出最常用的两种基本实现类:BaseRegionObserver:实现了RegionObserver接口的所有需要实 现的方法,并给出了最简单实现。
  7. BaseMasterObserver:实现了MasterObserver接口的所有需要实 现的方法,并给出了最简单的实现。

1.3 终端

  1. 只有一个接口CoprocessorService,并且没有提供基本的实现类。 该接口只有一个方法需要实现:getService,该方法需要返回Protocol Buffers(Google开发的第三方库,用来实现一种数据传输格式,类似 XML,但是比XML更节省传输资源)的Service实例,所以实现Endpoint 之前,还需要了解一下Protocol Buffers的相关知识作为基础。
  2. protobuf 简单介绍 github 地址,可以看出,就是一个高效的序列化框架。
    在这里插入图片描述

1.4 应用

  1. Hbase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的(<0.92)Hbase中,统计数据表的总行数,需要使用 Counter 方法,执行一次 MapReduce Job 才能得到。
  2. 虽然 HBase在数据存储层中集成了 MapReduce,能够有效用于数据表的分布式计算。然而在很多情况下,做一些简单的相加或者聚合计算的时候,如果直接将计算过程放置在 server 端,能够减少通讯开销,从而获得很好的性能提升。
  3. 所以,协处理器可以看作是将运算放在region server来处理的一种提升运算速度的方式

1.5 基本使用

  1. 编写协处理器打包成jar包上传到HDFS中
  2. 加载协处理器
1.5.1 静态加载,全局加载
  1. 修改hbase配置文件 hbase-site.xml,启动全局aggregation,操作所有表上数据。
<property>
    <name>hbase.coprocessor.user.region.classes</name>
 <value>org.apache.hadoop.hbase.coprocessor.AggregateImplementation</value>
</property>
1.5.2 动态加载
  1. 先将开发好的协处理器类打成jar包,并上传到hdfs的某个目录
  2. 禁用目标表 disable ‘star’
  3. 修改目标表的Coprocessor属性
hbase alter 'users', METHOD => 'table_att', 'Coprocessor'=>'hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar| org.myname.hbase.Coprocessor.RegionObserverExample|1073741823|  arg1=1,arg2=2'

‘users’ 拦截的目标表
METHOD => ‘table_att’ 这个表示alter命令要对users表做属性修改操作
hdfs://:/user//coprocessor.jar 协处理器类所在的jar包
org.myname.hbase.Coprocessor.RegionObserverExample 自定义的协处理器实现类
1073741823 协处理器的执行顺序号,可以为任意数值,小的会优先执行
arg1=1,arg2=2 自定义协处理器所需要的参数

  1. 加协处理器导致集群崩溃,可以尝试这样拯救
  • 修改hbase-site.xml,加入如下配置
<property>
<name>hbase.table.sanity.checks</name>
<value>false</value>
</property>
1.5.4 卸载协处理器
  1. 禁用表
disable 'mytable'
  1. 卸载
alter  'mytable',METHOD=>'table_att_unset',NAME=>'coprocessor$1' 
  1. 启用表
enable 'mytable'

2. 二级索引案例

  1. pom文件
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值