HBase协处理器加载的三种方式-阿里云开发者社区

开发者社区> 好程序员> 正文

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

简介:
+关注继续查看

  好程序员大数据培训分享HBase协处理器加载的三种方式,协处理器加载的三种方式
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

  1. 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上。
②:协处理器的完整类名。
③:协处理器优先级,整数表示。可以为空。
④:传递给协处理器的参数,可以为空。
注:各参数间不要有空格。

  1. 验证是否加载协处理器
    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文件中。

  1. 卸载协处理器
    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

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


1.2 WALObservers

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


1.3 MasterObservers

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


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

  1. 添加Jar包
    将您的代码放在HBase的类路径上。一种简单的方法是将jar(包含代码和所有依赖项)放入HBase的安装目录lib/中。
  2. 重启HBase生效。
  3. 静态卸载
    从hbase-site.xml中删除协处理器的元素,包括子元素。

重启HBase。
从类路径或HBase的lib/目录中删除协处理器的JAR文件。(可选)
本文转载于网络

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Sybase IQ如何将大文件数据迅速加载到数据库
  试想一下,如果一个文件5G、10G甚至更大。如何将它迅速地加载到数据库指定的表呢?我们看看Sybase IQ是如何迅速地将表的数据加载到数据库的。 数据文件格式: 1440,2011-01-09 00:00:00,1,珠海,1,C网,8612345678222,221943,1,12175,...
686 0
Assembly.LoadFrom加载程序集类型转换失败解决方法
为了让我的wcf模块框架支持自定义通道上下文,对代码又进行了一次小型的重构,测试时发现类型转换的错误,最后发现是loadfrom引起的。如果向 loadfrom 上下文中加载了一个程序集,则将激活 loadfromcontext 托管调试助手 (mda)。
1004 0
HBase数据访问的一些常用方式
类型 特点 场合 优缺点分析 Native Java API 最常规和高效的访问方式 适合MapReduce作业并行批处理HBase表数据     Hbase Shell HBase的命令行工具,最简单的访问方式 适合HBase管理使用   T...
1384 0
企业打开云HBase的正确方式,来自阿里云云数据库团队的解读
一、HBase的历史由来 HBase是一个开源的非关系型分布式数据库(NoSQL),基于谷歌的BigTable建模,是一个高可靠性、高性能、高伸缩的分布式存储系统,使用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
3916 0
【降价信息】云HBase X-Pack最高降价31%,再次释放大数据处理红利
阿里云中国站云HBase X-Pack中的Spark服务将于2019年7月16日进行价格下调。
713 0
Docker Windows Server 应用迁移计划上线,让您轻松处理旧版应用程序!
上周,我们发布了 Docker Windows Server 应用程序迁移计划,旨在帮助公司快速、轻松地迁移应用程序以及对旧版的 Windows Server 2008 应用程序进行现代化改造,同时推动在任何地方的任何应用程序进行持续创新。
1837 0
小程序实现图片上传,预览以及图片base64位处理
小程序实现图片上传,预览以及图片base64位处理
40 0
+关注
333
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载