109.1。观察者协处理器

在特定事件发生之前或之后触发观察者协处理器。在事件之前发生的观察者使用以pre前缀开头的方法,例如 prePut 。在事件之后发生的观察者会覆盖以post前缀开头的方法,例如 postPut

109.1.1。用于观察者协处理器的用例

安全

在执行GetPut操作之前,您可以使用preGetprePut方法检查权限。

参照完整性

HBase 不直接支持 RDBMS 的反射完整性概念,也称为外键。您可以使用协处理器来强制执行此类完整性。例如,如果您有一个业务规则,users表的每个插入必须后跟user_daily_attendance表中的相应条目,您可以实现协处理器以使用user上的prePut方法插入记录到user_daily_attendance

二级索引

您可以使用协处理器来维护二级索引。有关更多信息,请参阅 SecondaryIndexing

109.1.2。观察者协处理器的类型

RegionObserver

RegionObserver 协处理器允许您观察区域上的事件,例如GetPut操作。见 RegionObserver

RegionServerObserver

RegionServerObserver 允许您观察与 RegionServer 操作相关的事件,例如启动,停止或执行合并,提交或回滚。请参见 RegionServerObserver

MasterObserver

MasterObserver 允许您观察与 HBase Master 相关的事件,例如表创建,删除或架构修改。见 MasterObserver

WalObserver

WalObserver 允许您观察与写入预写日志(WAL)相关的事件。见 WALObserver

示例提供了观察者协处理器的工作示例。

109.2。端点协处理器

端点处理器允许您在数据位置执行计算。参见协处理器类比。一个例子是需要计算跨越数百个区域的整个表的运行平均值或总和。

与您的代码透明运行的观察者协处理器相比,必须使用HTable 中提供的 CoprocessorService()方法显式调用端点协处理器。

从 HBase 0.96 开始,端点协处理器使用 Google Protocol Buffers(protobuf)实现。有关 protobuf 的更多详细信息,请参阅 Google 的协议缓冲指南。端点以 0.94 版本编写的协处理器与 0.96 或更高版本不兼容。参见 HBASE-5448 )。要将 HBase 群集从 0.94 或更早版本升级到 0.96 或更高版本,您需要重新实现协处理器。

协处理器端点不应使用 HBase 内部,只能使用公共 API;理想情况下,CPEP 应仅依赖于接口和数据结构。这并不总是可行,但要注意这样做会使端点变脆,随着 HBase 内部发展而易于破损。注释为私有或演进的 HBase 内部 API 在删除之前不必遵守语义版本控制规则或关于弃用的一般 Java 规则。虽然生成的 protobuf 文件没有 hbase 受众注释 - 它们是由 protobuf protoc 工具创建的,它不知道 HBase 是如何工作的 - 它们应该被考虑@InterfaceAudience.Private因此容易改变。

示例提供了端点协处理器的工作示例。