版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《HBase分布式数据库实战》HBase分布式数据库实战项目五HBaseAPI开发
任务四HBase协处理器详解回顾知识点1
使用Shell命令行操作计数器回顾回顾知识点2单计数器JavaAPI回顾知识点3多计数器JavaAPI任务引入Hbase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。于是,HBase在0.92版本之后引入了协处理器(coprocessors),实现一些新特性:能够轻易建立二次索引、复杂过滤器(谓词下推)以及访问控制等。任务概要任务描述:本任务将介绍HBase协处理器的用途和用法。任务教学目标:熟悉HBase协处理器的作用。掌握HBase协处理器的使用方法和编程方法。一协处理器类型二协处理的加载、卸载方式教学内容三编程实现步骤协处理器类型知识点一(一)协处理器类型在使用HBase时,如果你的数据量达到了数十亿行或数百万列,此时能否在查询中返回大量数据将受制于网络的带宽,即便网络状况允许,但是客户端的计算处理也未必能够满足要求。在这种情况下,协处理器(Coprocessors)应运而生。它允许你将业务计算代码放入在RegionServer的协处理器中,将处理好的数据再返回给客户端,这可以极大地降低需要传输的数据量,从而获得性能上的提升。同时协处理器也允许用户扩展实现HBase目前所不具备的功能,如权限校验、二级索引、完整性约束等。协处理器的作用(一)协处理器类型Observer协处理器类似于关系型数据库中的触发器,当发生某些事件的时候这类协处理器会被Server端调用。通常可以用来实现下面功能:权限校验:在执行Get或Put操作之前,您可以使用preGet或prePut方法检查权限;完整性约束:HBase不支持关系型数据库中的外键功能,可以通过触发器在插入或者删除数据的时候,对关联的数据进行检查;二级索引:可以使用协处理器来维护二级索引。功能1.Observer协处理器(一)协处理器类型当前Observer协处理器有以下四种类型:RegionObserver:允许观察Region上的事件,例如Get和Put操作。RegionServerObserver:允许观察与RegionServer操作相关的事件,例如启动,停止或执行合并,提交或回滚。MasterObserver:允许观察与HBaseMaster相关的事件,例如表创建,删除或schema修改。WalObserver:允许观察与预写日志(WAL)相关的事件。类型1.Observer协处理器(一)协处理器类型以上四种类型的Observer协处理器均继承自Coprocessor接口,这四个接口中分别定义了所有可用的钩子方法,以便在对应方法前后执行特定的操作。接口1.Observer协处理器(一)协处理器类型1.Observer协处理器协处理器工作流程(一)协处理器类型2.Endpoint协处理器Endpoint协处理器类似于关系型数据库中的存储过程。客户端可以调用Endpoint协处理器在服务端对数据进行处理,然后再返回。Endpoint协处理器协处理的加载方式知识点二(二)协处理的加载方式第一步,在hbase-site.xml定义需要加载的协处理器。第二步,将jar(包含代码和所有依赖项)放入HBase安装目录中的lib目录下;第三步,重启HBase。<name>标签的值必须是下面其中之一:RegionObservers和Endpoints协处理器:hbase.coprocessor.region.classesWALObservers协处理器:hbase.coprocessor.wal.classesMasterObservers协处理器:hbase.coprocessor.master.classes<value>必须是协处理器实现类的全限定类名。如果为加载指定了多个类,则类名必须以逗号分隔。静态加载1.静态加载与卸载(二)协处理的加载方式1.静态加载与卸载<property><name>hbase.coprocessor.region.classes</name><value>org.myname.hbase.coprocessor.endpoint.SumEndPoint</value></property>(二)协处理的加载方式第一步,从hbase-site.xml中删除配置的协处理器的<property>元素及其子元素;第二步,从类路径或HBase的lib目录中删除协处理器的JAR文件(可选);第三步,重启HBase。静态卸载1.静态加载与卸载(二)协处理的加载方式第一步,使用HBaseShell禁用表。动态加载2.动态加载与卸载hbase>disable'tableName'(二)协处理的加载方式第二步,使用如下命令加载协处理器。动态加载2.动态加载与卸载hbase>alter'tableName',METHOD=>'table_att','Coprocessor'=>'hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar|org.myname.hbase.Coprocessor.RegionObserverExample|1073741823|arg1=1,arg2=2'(二)协处理的加载方式Coprocessor包含由管道(|)字符分隔的四个参数,按顺序解释如下:JAR包路径:通常为JAR包在HDFS上的路径。关于路径以下两点需要注意:允许使用通配符,例如:hdfs://<namenode>:<port>/user/<hadoop-user>/*.jar来添加指定的JAR包;可以使指定目录,例如:hdfs://<namenode>:<port>/user/<hadoop-user>/,这会添加目录中的所有JAR包,但不会搜索子目录中的JAR包。类名:协处理器的完整类名。优先级:协处理器的优先级,遵循数字的自然序,即值越小优先级越高。可以为空,在这种情况下,将分配默认优先级值。可选参数:传递的协处理器的可选参数。动态加载2.动态加载与卸载(二)协处理的加载方式第三步,启用表。动态加载2.动态加载与卸载hbase>enable'tableName'(二)协处理的加载方式第四步,验证协处理器是否已加载。若协处理器出现在TABLE_ATTRIBUTES属性中则代表加载成功。动态加载2.动态加载与卸载hbase>describe'tableName'(二)协处理的加载方式第一步,禁用表。第二步,移除表协处理器。第三步,启用表。动态卸载2.动态加载与卸载hbase>disable'tableName'hbase>alter'tableName',METHOD=>'table_att_unset',NAME=>'coprocessor$1'hbase>enable'tableName'编程实现步骤知识点三(三)编程实现步骤在社交类应用中,经常需要快速检索各用户的关注列表guanzhu,同时,又需要反向检索各种用户的粉丝列表fensi,为了实现这个需求,最佳实践是建立两张互为反向的表:需求一个表为正向索引关注表:“guanzhu”:Rowkey:af1:fromb另一个表为反向索引粉丝表:“fensi”:Rowkey:bf1:froma(三)编程实现步骤下面是两张表的建表语句:create'guanzhu','cf1'create'fensi','cf1'实现效果:往guanzhu表插入一条数据,就会自动往fensi表插入一条数据。put'guanzhu','a','cf1:from','b'put'fensi','b','cf1:from','a'1.建表(三)编程实现步骤 publicvoidprePut(ObserverContext<RegionCoprocessorEnvironment>e,Putput,WALEditedit,Durabilitydurability)throwsIOException{ //super.prePut(e,put,edit,durability); byte[]row=put.getRow(); Cellcell=put.get("f1".getBytes(),"from".getBytes()).get(0); PutputIndex=newPut(cell.getValueArray(),cell.getValueOffset(), cell.getValueLength()); putIndex.addColumn("f1".getBytes(),"from".getBytes(),row); table.put(putIndex); table.close(); }2.关键代码(三)编程实现步骤保存后导出jar包(cppp.jar),依次点击eclipse主界面左上角的File→Export,选择如图5-4-1所示的JARfile,点击Next,导出路径至/usr/local/hbase-1.4.13/myapp。上传到hdfs中的hbasecp目录下。3.导出jar包(三)编程实现步骤hbase(main):001:0>create'guanzhu','f1'hbase(main):002:0>create'fensi','f1'hbase(main):003:0>disable'fensi'hbase(main):004:0>alter'fensi',METHOD=>'table_att','coprocessor'=>'hdfs://192.168.6.131:9000/hbasecp/cppp.jar|HBaseAPI.TestCoprocessor|1001|'hbase(main):005:0>enable'fensi'4.运行程序(三)编程实现步骤现在插入数据进行验证:hbase(main):006:0>put'fensi','c','f1:from','b'查看结果:hbase(main):007:0>scan'fensi'ROWCOLUMN+CELLccolumn=f1:from,timestamp=1636709052709,value=b1row(s)in0.0110secondshbase(main):008:0>scan'guanzhu'ROWCO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产科主诉的皮肤护理
- 2026年中考生物一轮复习:人教版(2024)七年级上下册核心知识点背记手册
- 黑龙江省大庆市杜尔伯特蒙古族自治县市级名校2026届中考物理猜题卷含解析
- 副高级护理实践:儿科护理特色与挑战
- 中医急诊护理中的中药穴位艾灸技术
- 产科护理中的心理支持
- 老年服务信息化管理知识考试复习题库及解析(附答案)
- 江苏省海安县东片2026年中考物理考试模拟冲刺卷含解析
- 专题2.3 一元二次方程及其应用-中考数学重难点突破训练
- 【云南瑞斯德机械有限公司营运能力分析案例13000字(论文)】
- 2026年江苏高考英语试题及答案
- 2026年4月18日黑龙江省纪委遴选笔试真题及解析(下午综合卷)
- 配偶对股权代持的知情同意书
- 2026年行政后勤管理员预测试题含答案详解(模拟题)
- 建筑垃圾减量化监理监督实施细则
- 2026年长三角一体化发展指数与区域高质量发展评价体系
- 2026年高考历史全真模拟试卷及答案(共五套)
- 2025年邮政四级副干部竞聘笔试考试题及答案
- 2025年留置看护执勤规范笔试及答案
- 雨课堂学堂在线学堂云《保险学(中国人民)》单元测试考核答案
- 生成式AI赋能的情境化小学英语教学策略研究教学研究课题报告
评论
0/150
提交评论