Coprocessor:
1.Coprocessor提供了一种机制可以让开发者直接在RegionServer上运行自定义代码来管理数据。
使用Coprocessor,可以将业务代码封装,并在RegionServer上运行,也就是数据在那里,就在哪里跑代码,这样就节省了很大的数据传输的网络开销。
2.Coprocessor有两种:Observer和EndPoint
EndPoint主要用于计算,比如计算一些平均值或者求和。
Observer类似于传统关系型数据库的触发器,在一些特定的操作之前或之后触发。
Observer Coprocessor使用场景:
2.1安全性:在执行Get或Put操作前,通过preGet或prePut方法检查是否允许该操作。
2.2引用完整性约束:HBase并不支持关系型数据库中的引用完整性约束,但是我们可以通过使用Coprocessor增强这种约束
2.3二级索引:
二级索引设计思想:
通过建立列值到rowKey的映射来建立二级索引,通过列值找到rowKey,再通过rowKey找到相应的需求值。
Coprocessor加载方式:
要是用Coprocessor,就需要完成对它的装载。可以静态实现(通过HBase配置文件),也可以动态完成(通过shell或Java API)
静态装载和卸载Coprocessor(系统Coprocessor)
静态装载步骤:
1.在hbase-site.xml中使用标签定义一个人Coprocessor
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.cwj.hbase.coprocessor.observer.IndexObserver</value>
</property>
标签的内容是自定义Coprocessor的权限定类名
如果需要装载多个类,类名用逗号分隔
使用这种方式加载的Coprocessor将会作用在HBase所有表的全部Region上
2.将代码放到HBase的类路径下。jar包放在lib目录下
3.重启HBase
静态卸载的步骤:
1.移除hbase-site.xml中的配置
2.重启Hbase
3.删除jar包
动态装载Coprocessor(表级Coprocessor)
动态装载Coprocessor的有优势不需要重启HBase。动态加载的Coprocessor只针对某个表有效
步骤: