HBase——协处理器

2023-03-26  本文已影响0人  小波同学

一、简述

http://hbase.apache.org/book.html#cp

Hbase 作为列族数据库最经常被人诟病的特性包括:

比如,在旧版本的(<0.92)Hbase 中,统计数据表的总行数,需要使用 Counter 方法,执行一次 MapReduce Job 才能得到。虽然 HBase 在数据存储层中集成了 MapReduce,能够有效用于数据表的分布式计算。然而在很多情况下,做一些简单的相加或者聚合计算的时候, 如果直接将计算过程放置在 server 端,能够减少通讯开销,从而获 得很好的性能提升

二、协处理器类型

2.1 Observer协处理器

Observer 类似于传统数据库中的触发器,当发生某些事件的时候这类协处理器会被 Server 端调用。Observer Coprocessor 就是一些散布在 HBase Server 端代码中的 hook 钩子, 在固定的事件发生时被调用。比如: put 操作之前有钩子函数 prePut,该函数在 put 操作执行前会被 Region Server 调用;在 put 操作之后则有 postPut 钩子函数。

1. 功能

通常可以用来实现下面功能:

2. 类型

当前 Observer 协处理器有以下四种类型:
RegionObserver

RegionServerObserver

MasterObserver

WalObserver

3. 接口

以上四种类型的 Observer 协处理器均继承自 Coprocessor 接口,这四个接口中分别定义了所有可用的钩子方法,以便在对应方法前后执行特定的操作。通常情况下,我们并不会直接实现上面接口,而是继承其 Base 实现类,Base 实现类只是简单空实现了接口中的方法,这样我们在实现自定义的协处理器时,就不必实现所有方法,只需要重写必要方法即可。


这里以 RegionObservers 为例,其接口类中定义了所有可用的钩子方法,下面截取了部分方法的定义,多数方法都是成对出现的,有 pre 就有 post:


4. 执行流程

如果大家了解 Spring,可以将这种执行方式类比于其 AOP 的执行原理即可,官方文档当中也是这样类比的:

If you are familiar with Aspect Oriented Programming (AOP), you can think of a coprocessor as applying advice by intercepting a request and then running some custom code,before passing the request on to its final destination (or even changing the destination).
如果您熟悉面向切面编程(AOP),您可以将协处理器视为通过拦截请求然后运行一些自定义代码来使用 Advice,然后将请求传递到其最终目标(或者更改目标)。

2.2 Endpoint协处理器

总结

三、协处理的加载方式

协处理器的加载方式有两种:

静态加载的协处理器称之为 System Coprocessor,动态加载的协处理器称 之为 Table Coprocessor。

3.1 静态加载

通过修改 hbase-site.xml 这个文件来实现
启动全局 aggregation,能过操纵所有的表上的数据。只需要添加如下代码:

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

为所有 table 加载了一个 cp class,可以用” ,”分割加载多个 class

3.2 动态加载

hbase> disable 'mytable'

hbase> alter 'mytable', METHOD => 'table_att','coprocessor'=> >'|org.apache.Hadoop.hbase.coprocessor.AggregateImplementation||'

hbase> enable 'mytable'

3.3 协处理器卸载

只需三步:

disable ‘test’
alter ‘test’, METHOD => ‘table_att_unset’, NAME => ‘coprocessor$1’
enable ‘test’

参考:
https://blog.csdn.net/mxk4869/article/details/125613372

https://blog.csdn.net/CSDNGuoYuying/article/details/128831879

上一篇 下一篇

猜你喜欢

热点阅读