在分析协处理器 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 是一个基于 HDFS 的分布式、面向列的 NoSQL 数据库,具有高性能、可靠性和扩展性等特点。本文将详细介绍 HBase 的 RowKey 设计和协处理器运用。 HBase 的介绍 HBase 是一...
该项目展示了如何使用 HBase 区域观察者协处理器将流行的开源 Drool 规则引擎与 HBase 集成,以并行应用和执行规则。 这里,Drool 规则引擎位于 HBase 的数据路径上,并且能够为 HBase 表的每个请求触发(如果满足...
本资料“Hadoop_Learning:MapReduce,HBase,协处理器的学习与实现”将深入探讨这三个核心组件,并通过JavaScript的应用来增强理解。 MapReduce是Hadoop的核心计算模型,它将大型数据集分解为小块,然后在分布式...
本项目"test_coprocessor.zip"通过对比错误实现与正确实现的方式,深入浅出地揭示了如何有效地使用HBase协处理器。 首先,我们来看"Common"类。这个类通常会包含一些通用的常量和方法,以供协处理器类共享使用。在...
4-3 HBase优化策略三:读写优化策略 4-4 HBase协处理器简介 4-5 HBase实战:开发RegionObserver协处理器 4-6 HBase实战:HBase协处理器加载 第5章 容灾与监控 HBase容灾策略的简要介绍,配合命令演示如何对数据进行...
"基于协处理器的HBase内存索引机制的研究" 本文研究了基于协处理器的HBase内存索引机制,以提高HBase的多条件查询速度。在大数据时代,传统的关系型数据库难以处理无规范模式的数据集,于是NoSQL数据库如HBase、...
HBase协处理器允许在服务器端执行代码,可以用来优化数据处理的效率,增强数据处理能力。这对于希望将业务逻辑下移至存储层,以减少网络传输和提高响应速度的开发者而言,是一个非常有用的功能。 在客户端方面,...
本文将深入探讨如何利用协处理器(Coprocessor)机制在HBase中实现分类的二级索引设计,以提升查询效率并优化数据管理。 一、HBase与二级索引 HBase是建立在Hadoop之上的键值存储系统,它以行键、列族、列限定符和...
协处理器通过宏和概括的方式,我们可以将协处理器定义为一个框架,该框架提供了一种在HBase中执行自定义代码的简便方法。 代表协处理器的最常用类比是“触发器/存储过程”和AOP。 协处理器可以开发为: 观察者协处理...
协处理器是一种嵌入在HBase服务器端的自定义代码,它可以在数据读写过程中执行用户定义的操作,为HBase提供了扩展功能的平台。利用协处理器,我们可以为那些频繁查询的字段创建映射到行键的二级索引。这样,在查询时...
6. HBase协处理器机制:实现单次提交多表插入功能,提升存储效率。 7. 实验验证:验证了优化方案的存储能力和扩展性。 以上知识点不仅对分布式存储技术的研究具有参考价值,而且对于实际应用中构建高效、可扩展的...
在“观察者类型协处理器ObserverProcessorLog.zip”这个资源中,我们可以推断它与HBase的观察者模式协处理器有关,这涉及到HBase的扩展性和自定义行为。 观察者模式(Observer Pattern)是设计模式的一种,它定义了...
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.个人信息:身份证号、手机号、姓名清洗和扩展; 后期会...
* 利用HBase协处理器提高查询延迟 * 作业管理和监控 * 简洁的Web界面来管理、构建、监控和查询立方体 * 安全能力以设置ACL在立方体/项目级别 * 支持LDAP集成 在Hadoop生态系统中,Kylin属于SQL-on-Hadoop解决方案的...
- 了解HBase协处理器(Coprocessor)的概念及其应用场景。 - 学习如何实现二级索引来提高查询性能。 4. **过滤器查询** - 学习使用Filter进行复杂的查询操作。 - 掌握不同类型的过滤器及其用法。 5. **Hbase内部...
课时10:Observer协处理器实战之Master级别原理剖析 课时11:Observer协处理器实战之Region级别原理剖析 课时12:Observer协处理器实战之表复制应用实战 课时13:Endpoint协处理器实战之原理剖析 课时14:Endpoint...