在分析协处理器 Coprocessor 之前, 我们先来总结下客户端发起 RPC 请求, 最终到 HRegion 的过程
在客户端操作表中的数据时,会先找到改行的HRegionLocation,然后练习HRegionServer,通过RPC
调用HRegion上的方法,因为HRegion 才是真正存储数据的地方。
如果客户端代码想要在 HRegion 执行 CRUD 操作前后植入自定义的逻辑可以采用类似触发器的方式: 协处理器.
触发器可以在动作发生前后自定义一些动作, 协处理器也类似, 有 preOps 和 postOps 分别作用于事件前后.
下图展示了 Get 流程, 在 HRegion.get()操作前后分别执行了协处理器的 preGet 和 postGet():
注: HRegion 没有直接和 RegionObserver(即 Coprocessor 实现类)联系,而是经过了中间的 CoprocessorHost 主机.
图片来源: https://blogs.apache.org/hbase/entry/coprocessor_introduction
Coprocessor 相关的类的继承结构:
以 HRegion 上的 RegionCoprocessorHost为例, 当创建 HRegion 时(由 Master控制, RegionServer进行 open 或者 split),
会创建一个 RegionCoprocessorHost 对象, RegionCoprocessorHost 通过静态配置文件和表模式加载系统级别或者用
户级别的协处理器: loadSystemCoprocessors 和 loadTableCoprocessors. 系统级加载在抽象父类 CoprocessorHost 中
(其他 Host 比如 Master, RegionServer, WAL 也都会调用 loadSystemCoprocessors, 只是传递的 key 不同而已).
以加载静态配置文件为例, RegionCoprocessorHost 会从 hbase-site.xml 配置项"hbase.coprocessor.region.classes",
"hbase.coprocessor.user.region.classes"获取用户定义的协处理器的 Class 类型:implClass, 然后在 loadInstance()中通
过反射实例化协处理器对象 CoprocessorImpl
因为协处理器必须在专用的环境中才能运行, 即一个协处理器对应一个协处理器环境, 所以要把协处理器的 Class
类型, 以及刚刚实例化的协处理器对象, 还有一些环境需要的信息比如: 该协处理器的优先级, 加载顺序等, 调用抽
象方法 createEnvironment. 各个 CoprocessorHost 实现类都要实现该抽象方法.
用户自定义的 Coprocessor 是有不同的作用范围的, 因为 HBase 将各个组件分成 Master, RegionServer, Region.
因此不同的 Coprocessor 是要针对 HBase 中对应的组件. 而 Coprocessor 必须在专用的环境中运行, 因此 HBase 中
的各个组件都应该有各自独立的运行环境, 保证特定的 Coprocessor 只能运行在特定的专用环境中(类似隔离器)
Coprocessor, CoprocessorEnvironment, CoprocessorHost 以及 Region 的关系:
1. 一个 HRegion 只对应一个 CoprocessorHost
2. 一个 CoprocessorHost 可以有多个 CoprocessorEnvironment
3. 一个 CoprocessorEnvironment 运行一个 Coprocessor, 一个 Coprocessor 运行在唯一的 CoprocessorEnvironment
4. 因此一个 CoprocessorHost 上会有多个 Coprocessor
5. 一个 HRegion 上就可以作用多个 Coprocessor(协处理器链)
相关推荐
Hbase协处理器详解,进阶篇
该文档是介绍hbase的rowkey设计与hbase的协处理器运用,与大家分享!
该项目展示了如何使用 HBase 区域观察者协处理器将流行的开源 Drool 规则引擎与 HBase 集成,以并行应用和执行规则。 这里,Drool 规则引擎位于 HBase 的数据路径上,并且能够为 HBase 表的每个请求触发(如果满足...
对于2.1.6这个版本,使用协处理器需要引入hbase-common依赖。 协处理器分为两种,一种是observer协处理器,一种是endpoint协处理器。 下面首先记录第一种协处理器的使用步骤。 一、observer协处理器 案例背景 有user...
Hadoop_学习MapReduce,HBase,协处理器的学习与实现
4-3 HBase优化策略三:读写优化策略 4-4 HBase协处理器简介 4-5 HBase实战:开发RegionObserver协处理器 4-6 HBase实战:HBase协处理器加载 第5章 容灾与监控 HBase容灾策略的简要介绍,配合命令演示如何对数据进行...
协处理器通过宏和概括的方式,我们可以将协处理器定义为一个框架,该框架提供了一种在HBase中执行自定义代码的简便方法。 代表协处理器的最常用类比是“触发器/存储过程”和AOP。 协处理器可以开发为: 观察者协处理...
个人笔记整理(带目录),共8个章节: 一.Hbase快速入门 二.Apache HBase配置 ...四.HBase协处理器与二级索引 五.PHOENIX操作HBASE 六.HBase设计与优化 七.HBase与Spark集成 八.Trafodion操作HBase 共146页
基于协处理器的HBase二级索引方法.pdf
这个项目非常简单,仅三个类,展示了Hbase协处理器的错误实现方式。Common类包含了通用的常量和方法,AwfulOne展示了一个错误实现的协处理器,NiceOne展示了正确实现的协处理器。
基于协处理器的HBase内存索引机制的研究.pdf
基于协处理器的HBase分类二级索引设计.pdf
hbase-协处理器-示例此示例演示如何使用 HBase 协处理器和 Algebird monoid 实现分组聚合。 我们在这里使用的 HBase 版本是 0.94.18,与 AWS EMR 上可用的版本完全相同。在本地 HBase 应用程序中创建演示表下载并...
6.数据库(mysql、postgresql、mongodb、hbase、hdfs、memcached); 7.加解密(md5、sha、base64、aes、rsa); 8.文件; 9.http服务; 10.正则表达式; 11.个人信息:身份证号、手机号、姓名清洗和扩展; 后期会...
课时10:Observer协处理器实战之Master级别原理剖析 课时11:Observer协处理器实战之Region级别原理剖析 课时12:Observer协处理器实战之表复制应用实战 课时13:Endpoint协处理器实战之原理剖析 课时14:Endpoint...
协处理器框架,无需更改 HBase 源代码即可应用。 我们用几个月的时间验证了 Themis 的正确性,并优化算法以获得更好的性能。 执行 Themis 包含三个组件:时间戳服务器、客户端库、themis 协处理器。 时间戳服务器 ...
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 从HBase的集群搭建、HBaseshell操作、java...3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构
Hbase本身只有一级索引rowkey,现在通过Hbase coprocessor协处理器把Hbase的数据索引存储到Elasticsearch,从而建立二级索引;ppt中讲述了一些注意事项,挺有用的,希望能有所帮忙!
端点协处理器/ 包括用于需要使用 Google Protocol Buffers 进行编译并用作序列化介质的较新版本 HBase 的协处理器。 它基于 HBase 的 0.98 版本,其中似乎没有完整的端到端 protobuf 协处理器示例。
Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对...直接使用HBase的API,结合协处理器(coprocessor)和自定义的过滤器的话,小范围的查询在毫秒级响应,千万数据的话响应速度为秒级