hbase自定义协处理器实现

hbase自定义协处理器实现

  1. 首先编写代码,继承BaseRegionObserver,在代码中添加输出信息到/opt/apps/hbase_logs/hbase.log,如果协处理器生效,就会输出信息到hbase.log。

import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @Author: lih
 * @Date: 2019/5/16 9:31 AM
 * @Version 1.0
 * 自定义协处理器
 */
public class MyRegionProcessor extends BaseRegionObserver {

    public MyRegionProcessor() {
        log("new MyRegionProcessor");
    }

    public void start(CoprocessorEnvironment e)  {
        log("start:" + this.toString());
    }

    public void stop(CoprocessorEnvironment e)  {
        log("stop:" + this.toString());
    }


    public void log(String log) {
        try {
            FileOutputStream fos = new FileOutputStream("/opt/apps/hbase_logs/hbase.log", true);
            fos.write((log + "\r\n").getBytes());
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

2.打包上传到服务器代码打成jar包上传到hbase所有节点的lib目录下
3.在hbase-site.xml中配置

<property>
	<name>hbase.coprocessor.user.region.classes</name>
	<value>com.xxx.MyRegionProcessor</value>
</property>

为所有 table 加载了一个 cp class,可以用” ,”分割加载多个 class。

还可以使用动态加载,为一个表加载协处理器,这种方式不用上传jar包,同时不需要修改配置文件,可以不需要重启hbase。
启用表 aggregation,只对特定的表生效。通过 HBase Shell 来实现。
disable 指定表。 hbase> disable ‘mytable’
添加 aggregation
alter ‘dd’, METHOD => ‘table_att’, ‘Coprocessor’=>‘hdfs://xxx:8020/xxx-1.0.jar| com.xxx.MyRegionProcessor|2’
重启指定表 hbase> enable ‘mytable’

触发get 命令后,hbase_log中就会产生代码中的日志信息。

4.协处理器卸载

alter 'mytable', METHOD => 'table_att_unset', NAME => 'coprocessor$1'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值