Hbase协处理器coprocessor

分为两种类型

  1. observer 观察者相当于触发器
  2. Endpoint终端相当于存储过程

下面的观察者实现查询之前替换掉行键为Jack的KeyValue

import java.io.IOException;
import java.util.List;

import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Get;
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.util.Bytes;

public class RegionObserverTest extends BaseRegionObserver {
    private static byte[] fixed_rowkey = "Jack".getBytes();

    @Override
    public void postGet(ObserverContext<RegionCoprocessorEnvironment> c,
            Get get, List<KeyValue> result) throws IOException {
        if (Bytes.equals(get.getRow(), fixed_rowkey)) {

            KeyValue kv = new KeyValue(get.getRow(), Bytes.toBytes("time"),
                    Bytes.toBytes("time"), Bytes.toBytes(System
                            .currentTimeMillis()));
            result.add(kv);
        }
    }

}

加载协处理器命令

disable ‘students‘
alter ‘students‘ ,‘coprocessor‘=>‘hdfs://ns1/coprocessor.jar|com.hbase.RegionObserverTest||‘
enable ‘students‘
时间: 2024-11-01 09:19:20

Hbase协处理器coprocessor的相关文章

HBase协处理器

说明:类似于RDBMS中触发器,允许用户在region服务器上运行自己的代码,在客户端用户不用关心操作具体在哪进行 使用场景:权限控制,回调函数(钩子函数).扫描统计等 主要类:observer和endpoint observer:类似触发器,回调函数在特定事件发生时执行 endpoint:类似数据库存储过程, Coprocessor:定义了协处理器的基本约定,所有协处理器必须实现Coprocessor类 协处理器加载:可以在hbase-site.xml中配置或者通过表描述符加载 eg:使用配置

HBase协处理器实战

主要内容: 1. HBase协处理器介绍 2. 观察者(Observer) 3. 终端(endpoint) ------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. HBase协处理器介绍 系统协处理器可以全局导入regio

HBase协处理器及实例

为什么引入协处理器? HBase作为列数据库最经常被人诟病的特性包括:无法轻易建立"二级索引",难以执行求和.计数.排序等操作. 比如,在旧版本(<0.92)的Hbase中,统计数据表的总行数,需要使用Counter方法,执行一次MapReduce Job才能得到. 虽然HBase在数据存储层中集成了MapReduce,能够有效用于数据表的分布式计算.然而在很多情况下,做一些简单的相加或者聚合计算的时候,如果直接将计算过程放置在server端,能够减少通讯开销,从而获得很好的性能

hbase 协处理器

一.服务端1.安装Protobuf2.RPC proto 定义文件:Examples.protooption java_package = "org.apache.hadoop.hbase.coprocessor.example.generated";option java_outer_classname = "ExampleProtos";option java_generic_services = true;option java_generate_equals

HBase协处理器同步二级索引到Solr

一. 背景二. 什么是HBase的协处理器三. HBase协处理器同步数据到Solr四. 添加协处理器五. 测试六. 协处理器动态加载 一. 背景 在实际生产中,HBase往往不能满足多维度分析,我们能想到的办法就是通过创建HBase数据的二级索引来快速获取rowkey,从而得到想要的数据.目前比较流行的二级索引解决方案有Lily HBase Indexer,Phoenix自带的二级索引,华为Indexer,以及360的二级索引方案.上面的目前使用比较广泛的应该是Lily HBase Index

hbase协处理器编码实例

Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionServer上对数据执行自定义计算,而不是在客户端上执行计算. 本文是以上两者的简单实例,使用的环境:环境 jdk1.8 hadoop2.6.5 hbase1.2.4. 1.Endpoint实例  1> 编写适用于protobuf的proto文件,如下,尽量不要带注释,因为编译时可能出现乱码 option

HBase 协处理器统计行数

环境:cdh5.1.0 启用协处理器方法1. 启用协处理器 Aggregation(Enable Coprocessor Aggregation) 我们有两个方法:1.启动全局aggregation,能过操纵所有的表上的数据.通过修改hbase-site.xml这个文件来实现,只需要添加如下代码: <property> <name>hbase.coprocessor.user.region.classes</name> <value>org.apache.h

[How to] 使用HBase协处理器---Endpoint客户端代码的实现

1.简介 不同于Observer协处理器,EndPoint由于需要同region进行rpc服务的通信,以及客户端出数据的归并,需要自行实现客户端代码. 基于[How to] 使用HBase协处理器---Endpoint服务端的实现这篇文章,我们继续实现其客户端代码. 2.客户端代码实现方式介绍 目前基于HBase1.0.0的版本客户端一共可以基于以下五个API来实现: 1. Table.coprocessorService(byte[]) 基于单个region的服务请求,参数为rowKey值,被

利用Hbase的coprocessor实现增量式Apriori算法

Apriori在数据挖掘中是经典的频繁项集挖掘算法,其主要思想就是如果某个项集不频繁,则任何包含此项集的项集一定不频繁.而今天要实现的增量式的Apriori算法,有点像分布式的Apriori,因为我们可以把已挖掘的事务集和新增的事务集看作两个互相独立的数据集,挖掘新增的事务集,获取所有新增频繁集,然后与已有的频繁集做并集,对于两边都同时频繁的项集肯定全局频繁,而只有一边频繁的项集则需要统计其在两边的频繁计数,这样完成后就能获得所有的全局频繁集,并不需要重新挖掘已有的事务集,效率必然提高. 至于H