hbase 协处理器 部署_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文件。(可选)
转载请注明出处!欢迎关注本人微信公众号【hbase工作笔记】
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
hbase 协处理器 部署_HBase协处理器加载的三种方式相关推荐
- IDEA中Tomcat重新加载的几种方式
IDEA中Tomcat重新加载的几种方式 参考自IDEA官方帮助文档 1.Update resources 更新资源文件,当项目中的HTML, JSP, JavaScript, CSS and ima ...
- vue项目实现路由按需加载(路由懒加载)的3种方式
vue项目实现路由按需加载(路由懒加载)的3种方式 1.vue异步组件 2.es提案的import() 3.webpack的require,ensur *1.vue异步组件技术 ==== 异步加载 v ...
- Cesium加载模型两种方式
Cesium加载模型两种方式 代码如下 <!DOCTYPE html> <html><head><meta charset="UTF-8" ...
- 实现JS异步加载的三种方法
一.为什么要写异步加载: ①js加载本身是属于同步加载的,加载js文件会阻塞文档,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作.但是有些工具方法需要按需加载,有一些工具js文件它是不 ...
- 实现图片预加载的几种方式
感觉自己好久没有写博客了,可能自己变懒了.不知道为什么最近有点迷茫,不知道是该去学一下新东西还是该去看一下具有深度的东西.新的技术需要关注,但是我要去研究一下jquery的源码,这个东西很早就想去看, ...
- 页面加载的几种方式和区别
目录 页面加载的几种方式 DOM文档加载步骤 原生JS的 ready阶段 执行方法怎么写? 全部方式的演示代码 window和document的区别 页面加载的几种方式(原生JS和jQuery) 1. ...
- jsp页面数据加载的两种方式
JSP数据加载的两种方式 第一种: 三层架构写在controller的页面跳转前面,set到request域中 request.setAttribute("name", list) ...
- 图片预加载的三种方法
转载: 图片预加载的三个方法 - 浅夏初晴 - 博客园利用CSS.JavaScript及Ajax实现图片预加载的三大方法 预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利 ...
- hbase 协处理器 部署_hbase协处理器概念及知识点总结
HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键.列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台.HBase不限制存储的数据的种 ...
最新文章
- Educational Codeforces Round 78 (Rated for Div. 2)B~C[前缀和]
- 一文快速入门分库分表中间件 Sharding-JDBC
- Java JPanel的使用
- photoshop(ps) cs6中文版
- avue 文字点击 弹窗_经验 | UI设计师必懂的App弹窗设计方法
- 共享经济模式下的边缘计算——PPIO边缘云 laaS技术实践分享
- Request.ServerVariables 参数大全
- python request post 数组_[pve][python]用python3获取pve状态信息
- 机器视觉系统需要考虑的十个问题
- python---之np.unique
- 安卓智能手机刷机前的准备工作
- mysql软件可行性分析报告_网上商城系统可行性分析报告.doc
- Visio中的内容另存为图片且不改变画质
- uniapp+uniCloud实现批量上传图片到云端(解决h5端跨域问题)
- mysql 字段字符串转int_MySQL数据库面试题(2020最新版)(一)
- Android--设置App的启动页面
- ssm毕设项目客房订餐系统s2whx(java+VUE+Mybatis+Maven+Mysql+sprnig)
- python 随机选择list或numpy.ndarray中n个元素
- ShadowPLCs A Novel Scheme for Remote Detection of Industrial Process Control Attacks
- 互联旅馆项目的经历路线