HBASE协处理器
来源:互联网 发布:大数据解决方案公司 编辑:程序博客网 时间:2024/06/07 21:03
观察者(Observer)
观察者的设计意图是允许用户通过插入代码来重载协处理器框架的upcall方法,而具体的事件触发的callback方法由HBase的核心代码来执行。协处理器框架处理所有的callback调用细节,协处理器自身只需要插入添加或者改变的功能。
以HBase0.92版本为例,它提供了三种观察者接口:
- RegionObserver:提供客户端的数据操纵事件钩子:Get、Put、Delete、Scan等。
- WALObserver:提供WAL相关操作钩子。
- MasterObserver:提供DDL-类型的操作钩子。如创建、删除、修改数据表等。
这些接口可以同时使用在同一个地方,按照不同优先级顺序执行.用户可以任意基于协处理器实现复杂的HBase功能层。HBase有很多种事件可以触发观察者方法,这些事件与方法从HBase0.92版本起,都会集成在HBase API中。不过这些API可能会由于各种原因有所改动,不同版本的接口改动比较大,具体参考Java Doc。
RegionObserver工作原理,如图1所示。更多关于Observer细节请参见HBaseBook的第9.6.3章节。
图 RegionObserver工作原理
启用协处理器 Aggregation(Enable Coprocessor Aggregation)
我们有两个方法:1.启动全局aggregation,能过操纵所有的表上的数据。通过修改hbase-site.xml这个文件来实现,只需要添加如下代码:
<property> <name>hbase.coprocessor.user.region.classes<name> <value>org.apache.hadoop.hbase.coprocessor.AggregateImplementation<value><property>
2.启用表aggregation,只对特定的表生效。通过HBase Shell 来实现。
(1)disable指定表。hbase> disable 'mytable'
(2)添加aggregation
(3)重启指定表
实例代码(往一张表里插入数据时,向另一张表写数据):
package cproc.datacube.client.test;import java.io.IOException;import java.util.Iterator;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.KeyValue;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;import org.apache.hadoop.hbase.coprocessor.ObserverContext;import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;import org.apache.hadoop.hbase.regionserver.wal.WALEdit;public class TestCoprocessor extends BaseRegionObserver{ @Override public void prePut(final ObserverContext e, final Put put, final WALEdit edit, final boolean writeToWAL) throws IOException { //set configuration Configuration conf = new Configuration(); //need conf.set... HTable table = new HTable(conf, "indexTableName"); List kv = put.get("familyName".getBytes(), "columnName".getBytes()); Iterator kvItor = kv.iterator(); while (kvItor.hasNext()) { KeyValue tmp = kvItor.next(); Put indexPut = new Put(tmp.getValue()); indexPut.add("familyName".getBytes(), "columnName".getBytes(), tmp.getRow()); table.put(indexPut); } table.close(); } }
- HBase-6.hbase 协处理器
- Hbase--6 Hbase协处理器
- HBase协处理器
- hbase 协处理器
- HBase协处理器
- HBase--Coprocessor协处理器
- Hbase的协处理器
- hbase 协处理器
- HBase Coprocessor 协处理器
- HBase协处理器知识点
- hbase 协处理器
- HBase协处理器
- Hbase 协处理器 Coprocessor
- Hbase协处理器coprocessor
- HBase协处理器实战
- HBase协处理器
- HBase协处理器实战
- HBase协处理器
- Java IO流操作汇总: inputStream 和 outputStream
- ICE ZEROC文档翻译 (-)
- Android插入USB设备,自动弹出提示运行apk
- JVM学习---JVM内存结构、垃圾回收
- Robust Real-time Face Detection
- HBASE协处理器
- 【备忘】2017年最新使用MUI开发跨平台混合APP全套完整视频教程
- springMVC4中获取request和response对象
- 【Scikit-Learn 中文文档】处理文本数据
- Kubernetes1.8.4安装指南 -- 1. 环境准备
- [BZOJ]4455: [Zjoi2016]小星星 树形DP+容斥
- Centos升级Python 2.7并安装pip、ipython
- tecplot中的各种标注
- 机器人领域 期刊与会议