当前位置: 七九推 > IT编程>脚本编程>vue.js > hbase 协处理器 部署_HBase协处理器加载的三种方式

hbase 协处理器 部署_HBase协处理器加载的三种方式

2022年06月23日 vue.js 我要评论
本文主要给大家罗列了HBase协处理器加载的三种方式:Shell加载(动态)、Api加载(动态)、配置文件加载(静态)。其中静态加载方式需要重启HBase。 我们假设我们已经有一个现成的

本文主要给大家罗列了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://:/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

hbase.coprocessor.region.classes

org.myname.hbase.Coprocessor.RegionObserverExample

1.2 WALObservers

hbase.coprocessor.wal.classes

org.myname.hbase.Coprocessor.RegionObserverExample

1.3 MasterObservers

hbase.coprocessor.master.classes

org.myname.hbase.Coprocessor.RegionObserverExample

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

2. 添加Jar包

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

3. 重启HBase生效。

4. 静态卸载

从hbase-site.xml中删除协处理器的元素,包括子元素。

重启HBase。

从类路径或HBase的lib/目录中删除协处理器的JAR文件。(可选)

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

  • Vue整合ElementUI

    Vue整合ElementUI

    文章目录 Vue整合ElementUI下载喝配置ElementUI使用ElementUI美化我们的ElementUI实现路由跳转 Vue整合ElementUI... [阅读全文]
  • 毒霸网址大全的彻底删除

    毒霸网址大全的彻底删除

    篡改主页真是很讨厌,不知道什么时候下载的软件就带上了。说一下处理方法。 [阅读全文]
  • VUE的axios的详细介绍和用法

    VUE的axios的详细介绍和用法

    Vue中发送网络请求有非常多的方式, 那么, 在开发中, 如何选择呢? 选择一: 传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢? ... [阅读全文]
  • 使用vmware ESXI创建虚拟机

    使用vmware ESXI创建虚拟机

    一、目标: ip:192.168.0.237 操作系统:centos7 hostname:home02_2 虚拟机名字:... [阅读全文]
  • vue基础知识

    vue基础知识

    概述 Vue是由一个个实例构建而成的,一个组件就是一个Vue的实例 官网 https://cn.vuejs.org/v2/guide/ link ... [阅读全文]
  • 前端路由拦截器使用及介绍

    前端路由拦截器使用及介绍

    一:路由拦截器(beforeEach:路由守卫) vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。(在路由跳转时触发)我们主要介绍的... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2022  七九推 保留所有权利. 粤ICP备17035492号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com