设为首页 加入收藏

TOP

HBase协处理器加载过程(1.2)
2019-04-08 01:46:10 】 浏览:73
Tags:HBase 处理器 加载 过程 1.2
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GK_kk/article/details/77370366
之前写过HBase协处理器的一些原理和使用,基本上都是官方文档和官方的博客翻过来的,知道了怎么写,怎么用。


现在需要思考的一个问题是,自己写的协处理器是怎么加载成功并调用的。


一、首先来看ObserverCoprocessor:
1.观察者协处理器的静态加载的配置是在hbase-site.xml中配置如下属性:
通过hbase.coprocessor.region.classes 配置 RegionObservers 和 Endpoints.
通过hbase.coprocessor.wal.classes 配置 WALObservers.
通过hbase.coprocessor.master.classes 配置MasterObservers.


hbase.coprocessor.region.classes:会被加载到默认所有表上。
hbase.coprocessor.master.classes:由HMaster进程加载。


对应的java类分别是:HMaster、HRegion、FSHLog
2.HMaster
HMaster中有一个属性叫MasterCoprocessorHost cpHost;
而关于MasterCoprocessorHost类的描述:
为面向主机的操作提供协处理器框架和环境。@link HMaster通过这个类与加载的协处理器进行交互。
BaseMasterObserver实现MasterObserver,我们自定义的Observer协处理器实现BaseMasterObserver。而这个类中有MasterObserver中所有的方法,并且最终调用对应的方法。
比如:

创建表时,会在CreateTableHandler类中的调用:

3.HRegion
同样也有一个属性叫private RegionCoprocessorHost coprocessorHost;
RegionCoprocessorHost类的描述信息:
实现在@link区域内加载的coprocessor环境和运行时支持。
在各方法中调用:

HRegion中调用钩子函数:



3. FSHLog
FSHLog中的属性为:WALCoprocessorHost,这个类作用同上边两个一样。
调用例子
FSHLog类中的append方法调用协处理器的钩子函数:



二、EndPoint协处理器
动态RPC端点类似于存储过程。终端可以随时从客户机调用。调用时,会在目标区域或区域远程执行,并将执行结果返回给客户端。
Endpoint协处理器—动态rpc协议,直接在region进行计算,编写客户端代码调用服务,即将结果返回到客户端(Reponse)。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇大数据Spark优化读取Hbase--regio.. 下一篇多种字符集并存情况下sqoop从MySQ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目