美文网首页HBASE 知识整理HBASE 精选文集
HBase协处理器加载的三种方式

HBase协处理器加载的三种方式

作者: 步闲 | 来源:发表于2020-04-08 10:57 被阅读0次

本文主要给大家罗列了HBase协处理器加载的三种方式:Shell加载(动态)、Api加载(动态)、配置文件加载(静态)。其中静态加载方式需要重启HBase。

我们假设我们已经有一个现成的需要加载的协处理器Jar包:HelloCoprocessor-0.0.1.jar

协处理器加载的三种方式

Shell加载

1. 上传HDFS

将打包好的HelloCoprocessor-0.0.1.jar上传服务器,然后放到HDFS上。

# 切换hadoop用户,创建演示目录
$ hdfs dfs -mkdir /usr/hbase/coprocessor
$ hdfs dfs -put HelloCoprocessor-0.0.1.jar /usr/hbase/coprocessor

2. Shell 加载协处理器

我们假设其协处理器类的包名为:
org.myname.hbase.Coprocessor.RegionObserverExample
Shell 操作如下:

hbase> disable 'mytable' # 禁用表,可选
hbase> alter 'mytable', METHOD => 'table_att', 'coprocessor' => '/usr/hbase/coprocessor/HelloCoprocessor-0.0.1.jar'|org.myname.hbase.Coprocessor.RegionObserverExample|1001|arg1=1,arg2=2'
hbase> enable 'mytable' # 禁用表后启用表,可选

结构如下:

hbase> alter 'mytable', METHOD => 'table_att', 'coprocessor' => ①|②|③|④'  

解释下上面各个参数:
①:协处理器Jar包路径,要保证所有的RegionServer可读取到。也可以是本地路径,不过建议是放在HDFS上。
②:协处理器的完整类名。
③:协处理器优先级,整数表示。可以为空。
④:传递给协处理器的参数,可以为空。

注:各参数间不要有空格。

3. 验证是否加载协处理器

hbase> desc 'mytable'

Table mytable is ENABLE
mytable, {TABLE_ATTRIBUTES => {coprocessor$1 => '/usr/hbase/coprocessor/HelloCoprocessor-0.0.1.jar'|org.myname.hbase.Coprocessor.RegionObserverExample|1001|arg1=1,arg2=2'}}

此验证不保证协处理器能正常工作:shell命令既不保证特定位置存在jar文件,也不验证给定类是否实际包含在jar文件中。

4. 卸载协处理器

hbase> disable 'mytable' # 禁用表,可选
hbase> alter 'mytable', METHOD => 'table_att_unset', NAME => 'coprocessor$1'
hbase> enable 'mytable' # 禁用表后启用表,可选

坑:在没有重启HBase情况下,如果修改协处理器代码并重新加载协处理器,请重命名协处理器Jar包的名字,否则不会生效。(由于当前JVM引用了现有的协处理器,因此必须通过重新启动RegionServer来重新启动JVM,以便替换它。)

Api 加载

具体方法是调用HtableDescriptor的addCoprocessor方法。该方法有两个重载方法:

  • addCoprocessor(String className)
  • addCoprocessor(className,jarPath,priority,kvs)
    第二个重载方法提供了上述Shell中所需的各个参数①②③④,方法一则需要用户手动将jar包分发到各个RegionServer的lib目录下。

示例代码如下:

TableName tableName = TableName.valueOf("mytable");
Path path = new Path("hdfs://<namenode>:<port>/usr/hbase/coprocessor/HelloCoprocessor-0.0.1.jar");
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
Admin admin = connection.getAdmin();
admin.disableTable(tableName);
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
HColumnDescriptor columnFamily1 = new HColumnDescriptor("f1");
columnFamily1.setMaxVersions(1);
hTableDescriptor.addFamily(columnFamily1);
HColumnDescriptor columnFamily2 = new HColumnDescriptor("f2");
columnFamily2.setMaxVersions(3);
hTableDescriptor.addFamily(columnFamily2);
hTableDescriptor.addCoprocessor('org.myname.hbase.Coprocessor.RegionObserverExample', path,
Coprocessor.PRIORITY_USER, null);
admin.modifyTable(tableName, hTableDescriptor);
admin.enableTable(tableName);

重新加载表定义,无需使用addCoprocessor()方法设置协处理器的值。这将删除附加到表的任何协处理器。

配置文件加载

1. 修改配置文件:hbase-site.xml,配置项如下:

1.1 RegionObservers/Endpoints

<property>
    <name>hbase.coprocessor.region.classes</name>
    <value>org.myname.hbase.Coprocessor.RegionObserverExample</value> 
</property> 

1.2 WALObservers

<property>
    <name>hbase.coprocessor.wal.classes</name>
    <value>org.myname.hbase.Coprocessor.RegionObserverExample</value> 
</property> 

1.3 MasterObservers

<property>
    <name>hbase.coprocessor.master.classes</name>
    <value>org.myname.hbase.Coprocessor.RegionObserverExample</value> 
</property> 

如果想同时配置多个协处理器,可以用逗号分隔多个协处理器的类名。

2. 添加Jar包

将您的代码放在HBase的类路径上。一种简单的方法是将jar(包含代码和所有依赖项)放入HBase的安装目录lib/中。

3. 重启HBase生效。

4. 静态卸载

  • 从hbase-site.xml中删除协处理器的<property>元素,包括子元素。
  • 重启HBase。
  • 从类路径或HBase的lib/目录中删除协处理器的JAR文件。(可选)
扫描二维码关注博主公众号

转载请注明出处!欢迎关注本人微信公众号【HBase工作笔记】

相关文章

  • HBase协处理器加载的三种方式

    本文主要给大家罗列了HBase协处理器加载的三种方式:Shell加载(动态)、Api加载(动态)、配置文件加载(静...

  • HBaseAPI应用与优化

    HBase API 客户端操作 HBaseAPI 客户端操作 代码: Hbase协处理器 协处理器概述 官方地址[...

  • HBase学习 - Coprocessor

    本文基于hbase-1.3.0源码 1. 前言 HBase coprocessor(协处理器)按照工作方式分为两种...

  • 大数据实战(下)-HBase Coprocessor

    HBase协处理器思维导图

  • Hbase协处理器

    一、协处理器的介绍 Hbase可以让用户的部分逻辑在数据存放端及Hbase服务端进行计算的机制(框架)。协处理器允...

  • Hbase协处理器实战

    协处理器的实战定义 Hbase可以让用户的部分逻辑在数据存储端及hbase服务端进行计算的机制。协处理器允许用户在...

  • HBase协处理器observer

    一、简介 本文将介绍HBase协处理器中的observer,observer协处理器类似于数据库中的触发器,也类似...

  • 【HBase】HBase 协处理器

    [TOC] 一、协处理器的产生 HBase 和 MapReduce 有很高的集成,可以使用 MR 对存储在 HBa...

  • 尚硅谷大数据技术之电信客服

    3.2.6 协处理器 重新编译项目,发布****jar****包到hbase****的lib****目录下(注意需...

  • 细述hbase协处理器

    1.起因(Why HBaseCoprocessor) HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建...

网友评论

    本文标题:HBase协处理器加载的三种方式

    本文链接:https://www.haomeiwen.com/subject/rbbzphtx.html