利用 Coprocessor,用户可以将求最大值的代码部署到 HBase Server 端,HBase 将利用底层 cluster 的多个节点并发执行求最大值的操作。即在每个 Region 范围内 执行求最大值的代码,将每个 Region 的最大值在 Region Server 端计算出,仅仅将该 max 值返回给客户端。在客户端进一步将多个 Region 的最大值进一步处理而找到其中的最大值。这样整体的执行效率就会提高很多
下图是 EndPoint 的工作原理:
五、概念总结
observer 允许集群在正常的客户端操作过程中可以有不同的行为表现
endpoint 允许扩展集群的能力,对客户端应用开放新的运算命令
observer 类似于 RDBMS 中的触发器,主要在服务端工作
endpoint 类似于 RDBMS 中的存储过程,主要在 服务器端、client 端工作
observer 可以实现权限管理、优先级设置、监控、 ddl 控制、 二级索引等功能
endpoint 可以实现 min、 max、 avg、 sum、 distinct、 group by 等功能
六、加载的方式
1、静态加载
通过修改 hbase-site.xml 这个文件来实现
启动全局 aggregation,能过操纵所有的表上的数据。只需要添加如下代码:
注意: 为所有 table 加载了一个 cp class,可以用” ,”分割加载多个 class
2、动态加载:
启用表 aggregation,只对特定的表生效
通过 HBase Shell 来实现,disable 禁用表
添加 aggregation , 添加后启用表即可
代码语言:javascript
复制
hbase> alter 'mytable', METHOD => 'table_att','coprocessor'=>'|org.apache.Hadoop.hbase.coprocessor.AggregateImplementation||'
七、卸载的方式
1、禁用表:
代码语言:javascript
复制
disable 'test'
2、修改表: 删除协处理器的配置信息
代码语言:javascript
复制
alter ‘test’, METHOD => 'table_att_unset', NAME => 'coprocessor$1’