HBase总结(10)--协处理器
Posted 莫西里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase总结(10)--协处理器相关的知识,希望对你有一定的参考价值。
一、介绍
Hbase作为列存储的数据库,很多关于统计的函数没有直接快速的计算,因此HBase提供了协处理器的功能,协处理提供了用户在region服务器端插入自己的代码,从而实现特定功能的权利。通过用户自写的协处理器,用户可以创建二级索引、完成行数量的统计等功能。
二、解释
1、协处理器的分类:
协处理器主要分为两类:观察者模式(obverser)和终端(endpoint)两种,这两种写出器都是Coprocessor类,从而实现协处理器框架的:
(1)观察者模式
该模式类似于关系型数据库中的触发器,即用户可以规定在客户端或者其他进行某一种动作时,触发一个用户的自定义的功能,从而实现一些其他功能。因为Hbase无法直接创建二级索引,但是我们可以通过在观察者模式中,在每次插入一条数据项时通过自定义功能实现二级索引。
(2)终端模式
该模式类似于关系型数据库中的存储过程,用户可以通过RPC请求触发终端中的代码,从而实现某些功能。例如可以在终端中实现多某些表行的统计。
2、协处理器权限
协处理器也存在执行顺序上的权限问题,在Coprocessor.Priority函数中定了协处理器的级别:SYSTEM、USER。
(1)SYSTEM:系统级别的协处理器权限要大于用户级别的协处理器,因此在执行协处理器的过程中,系统级协处理器先别执行,而用户级的协处理器后备执行。
(2)相同级别的协处理器都带有一个序号,以辨别同级别协处理器的执行顺序。
3、协处理器加载
协处理器的加载只要有两种方式:
(1)从配置中加载
用户可以在hbase-site.xml文件中配置协处理器类,通过在其中配置协处理器类的位置。在配置文件中配置项的顺序很重要,因此在配置项中的顺序则是协处理器加载的顺序,也就是协处理器执行的顺序。并且通过配置加载的协处理器肯定都是每一张表都会被应用上。在该配置中有几个配置选项,可以规定协处理器监听的位置:
hbase.coprocessor.master.classes master处理,在一些master级别的操作,如创建表、删除表等时会触发该处理器。
hbase.coprocessor.region.classes region处理,在region级别的操作,例如插入、删除、获取数据的操作时可以出发这些函数。
hbase.coprocessor.wal.classes wal日志文件处理,在wal操作过程中的协处理器触发函数。
(2)从表描述中加载
该功能是在表的描述中为其添加一个协处理器的描述,从而将协处理器的代码传递到region端,但是该种方法只能为特定的某一张表添加用户定义的协处理器。
用户可以通过HTableDescriptor.setValue()方法添加协处理器
key值:key值必须以 COPROCESSOR开头,通过$+数字的规定该协处理器的序号。
value值:value值有三部分组成,每一部分有 | 进行分分割,第一部分为类的路径,第二部分为协处理器所在的类,第三部分为协处理器的等级
例子:
HTableDescriptor.setValue("COPROCESSOR$1","hdfs://localhost:9000/user/test/test.jar|coprocessor.CoprocessorTest|"+Coprocessor.USER)
4、协处理器系统
所有的协处理器都继承自同一个类Coprecessor类。因此所有的协处理器都具有相同的属性:
(1)start(CoprocessorEnviroment env) / stop(CoprocessorEnviroment env)
在协处理器的生成周期中,start函数启动协处理器,二stop函数则停止协处理器功能。
(2)协处理器的状态
在协处理器中定义了一个协处理器的所有的状态,并且所有的状态都封装在一个枚举类 Coprocessor.State 中:
UNINSTALLED 协处理器的最初状态,没有环境,也没有被初始化
INSTALLED 实例装在了他的环境参数
STARTING 协处理器开始将要工作,也就是start()函数将要被调用了
ACTIVE start函数已经被调用
STOPPING stop函数将要被调用之前的状态
STOPPED stop 函数被调用
三、总结
该片文章先讲述了协处理器的特点,如果有什么不正确的地方,希望能够指出
以上是关于HBase总结(10)--协处理器的主要内容,如果未能解决你的问题,请参考以下文章