版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《HBase分布式数据库实战》HBase分布式数据库实战项目五HBaseAPI开发
任务一HBase常用JavaAPI回顾知识点1
HBaseShell操作回顾回顾知识点2Help命令回顾知识点3General命令回顾知识点4DDL命令回顾知识点5namespace命令回顾知识点6DML命令任务引入在日常工作中,会遇到HBaseShell无法满足需求的情况,这时就需要使用API进行编程来满足复杂需求,本任务将介绍HBase中一些常用API的用法。任务概要任务描述:从本任务开始,我们将进入HBase开发部分的学习,本任务将介绍HBase中常用的JavaAPI接口,对其功能和常用方法做简要说明,然后给出实例来介绍如何使用这些方法。任务教学目标:掌握常用的HBaseJavaAPI功能及用法。掌握HBaseAPI开发流程。一HBase常用API二HBase编程实例教学内容HBase常用API知识点一(一)HBase常用APIAdmin类常用方法返回值方法作用void(why,e)终止服务器或客户端voidaddColumn(TableNametableName,HColumnDescriptorcolumn)向一个已存在的表添加列booleanbalancer调用balancer进行负载均衡voidcreateTable(HTableDescriptordesc)创建表voiddeleteTable(TableNametableName)删除表void(tableName)禁用表voidenableTable(TableNametableName)启用表HTableDescriptorlistTableDescriptorsByNamespace(Stringname)按照命名空间列出表项booleantableExists(TableNametableName)表是否存在1.org.apache.hadoop.hbase.client.Admin(一)HBase常用APIHBaseConfiguration类常用方法返回值方法作用staticorg.apache.hadoop.conf.ConfigurationaddHbaseResources(org.apache.hadoop.conf.Configurationconf)向当前配置中添加配置信息staticorg.apache.hadoop.conf.Configurationcreate()使用默认的HBase配置创建staticvoidmerge(org.apache.hadoop.conf.ConfigurationdestConf,org.apache.hadoop.conf.ConfigurationsrcConf)合并两个配置文件2.org.apache.hadoop.hbase.HBaseConfiguration(一)HBase常用APIHTable类常用方法返回值方法作用voidclose()释放缓冲区资源,根据数据变化更新Tablevoiddelete(Deletedelete)删除表中指定的单元格或行booleanexists(Getget)检查指定的列是否存在get(Getget)从指定位置取出相应的值voidput(Putput)向指定位置添加值ResultScannergetScanner(Scanscan)获得ResultScanner实例3.HTable类常用方法(一)HBase常用APIHTableDescriptor类常用方法返回值方法作用HTableDescriptoraddFamily(HColumnDescriptorfamily)添加列族Collection<HColumnDescriptor>getFamilies()返回列表中所有列族的名字TableNamegetTableName()返回表的名字byte[]getValue(byte[]key)获得某个属性的值HColumnDescriptorremoveFamily(byte[]column)删除某个列族HTableDescriptorsetValue(byte[]key,byte[]value)设置属性的值4.org.apache.hadoop.hbase.HTableDescriptor(一)HBase常用APIHColumnDescriptor类常用方法返回值方法作用byte[]getName()获取列族的名字byte[](byte[]key)获取某列某单元格的值HColumnDescriptorsetValue(byte[]key,byte[]value)设置某单元格的值5.org.apache.hadoop.hbase.HColumnDescriptor(一)HBase常用APIPut类常用方法返回值方法作用PutaddColumn(byte[]family,byte[]qualifier,byte[]value)将指定的列族、列限定符、对应的值添加到Put实例中List<Cell>get(byte[]family,byte[]qualifier)获取列族和列限定符指定列中所有行的值booleanhas(byte[]family,byte[]qualifier)检查列族和列限定符是否存在booleanhas(byte[]family,byte[]qualifier,byte[]value)检查列族和列限定符是否存在指定的value6.org.apache.hadoop.hbase.client.Put(一)HBase常用APIGet类常用方法返回值方法作用PutaddColumn(byte[]family,byte[]qualifier,byte[]value)将指定的列族、列限定符、对应的值添加到Put实例中List<Cell>get(byte[]family,byte[]qualifier)获取列族和列限定符指定列中所有行的值booleanhas(byte[]family,byte[]qualifier)检查列族和列限定符是否存在booleanhas(byte[]family,byte[]qualifier,byte[]value)检查列族和列限定符是否存在指定的value7.org.apache.hadoop.hbase.client.Get(一)HBase常用APIResult类常用方法返回值方法作用booleancontainsColumn(byte[]family,byte[]qualifier)检查是否包含列族和列限定符制定的列List<Cell>getColumnCells(byte[]family,byte[]qualifier)获得列族和列限定符指定的列所有行的值NavigableMap<byte[],byte[]>getFamilyMap(byte[]family)根据列族获得包含列限定符和值的所有行的键值对byte[]getValue(byte[]family,byte[]qualifier)获得列族和列限定符指定的单元格的最新值8.org.apache.hadoop.hbase.client.Result(一)HBase常用APIResultScanner类常用方法返回值方法作用voidclose()关闭scanner并释放资源Resultnext()获得下一个Result实例9.org.apache.hadoop.hbase.client.ResultScanner(一)HBase常用APIScan类常用方法返回值方法作用ScanaddColumn(byte[]family,byte[]qualifier)限定需要查找的列族ScanaddFamily(byte[]family)限定列族和列限定符指定的列ScansetMaxVersions()限定最大的版本个数ScansetTimeRange(longminStamp,longmaxStamp)限定最大的时间戳和最小的时间戳,只有在此范围内的单元格才能被获取ScansetFilter(Filterfilter)指定Filter过滤掉不需要的数据ScansetStartRow(byte[]startRow)限定开始的行,否则从表头开始ScansetStopRow(byte[]stopRow)限定结束的行,不包含此行ScansetBatch(intbatch)限定最多返回的单元格数目。用于防止返回过多的数据导致OutoMemory错误10.org.apache.hadoop.hbase.client.ScanHBase编程实例知识点二(二)HBase编程实例进入CentOS7下的eclipse程序,在eclipse左上角依次点击File→New→JavaProject1.编程环境搭建(二)HBase编程实例在弹出的窗口中输入项目名称HBaseAPI,点击Finish即可创建项目1.编程环境搭建(二)HBase编程实例添加依赖包:在新创建的项目窗口上右键项目→New→Folder,创建conf文件夹1.编程环境搭建(二)HBase编程实例将HBase安装目录下conf文件夹中的hbase-site.xml文件复制到上一步创建的HBaseAPI项目的conf文件夹中1.编程环境搭建(二)HBase编程实例在项目上右键→properties,在弹出的界面左边点击JavaBuildPath,点击Libraries,点击右边的AddExternalJARs,添加HBase依赖包1.编程环境搭建(二)HBase编程实例然后选择HBase安装目录下的lib文件夹,按ctrl+A全选,点击确定1.编程环境搭建(二)HBase编程实例此外,我们再次右键项目→properties→JavaBuildPath→Libraries→AddClassFolder1.编程环境搭建(二)HBase编程实例选择刚才创建的conf文件夹,点击OK1.编程环境搭建(二)HBase编程实例首先右键项目创建新的package,命名为HBaseAPI2.编写程序(二)HBase编程实例创建一张表,如果表存在,则输出“tablealreadyexists”publicstaticvoidcreatTable(StringtableName,String[]familys)throwsException{HBaseAdminadmin=newHBaseAdmin(conf);if(admin.tableExists(tableName)){System.out.println("tablealreadyexists!");}else{HTableDescriptortableDesc=newHTableDescriptor(tableName);for(inti=0;i<familys.length;i++){tableDesc.addFamily(newHColumnDescriptor(familys[i]));}admin.createTable(tableDesc);System.out.println("createtable"+tableName+"ok.");}}2.编写程序(关键代码)(二)HBase编程实例删除表publicstaticvoiddeleteTable(StringtableName)throwsException{try{HBaseAdminadmin=newHBaseAdmin(conf);admin.disableTable(tableName);admin.deleteTable(tableName);System.out.println("deletetable"+tableName+"ok.");}catch(MasterNotRunningExceptione){e.printStackTrace();}catch(ZooKeeperConnectionExceptione){e.printStackTrace();}}2.编写程序(关键代码)(二)HBase编程实例插入一行记录
publicstaticvoidaddRecord(StringtableName,StringrowKey,Stringfamily,Stringqualifier,Stringvalue)throwsException{try{HTabletable=newHTable(conf,tableName);Putput=newPut(Bytes.toBytes(rowKey));put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));table.put(put);System.out.println("insertrecored"+rowKey+"totable"+tableName+"ok.");}catch(IOExceptione){e.printStackTrace();}}2.编写程序(关键代码)(二)HBase编程实例删除一行记录
publicstaticvoiddelRecord(StringtableName,StringrowKey)throwsIOException{HTabletable=newHTable(conf,tableName);Listlist=newArrayList();Deletedel=newDelete(rowKey.getBytes());list.add(del);table.delete(list);System.out.println("delrecored"+rowKey+"ok.");}2.编写程序(关键代码)(二)HBase编程实例查找一行记录
publicstaticvoidgetOneRecord(StringtableName,StringrowKey)throwsIOException{HTabletable=newHTable(conf,tableName);Getget=newGet(rowKey.getBytes());Resultrs=table.get(get);for(KeyValuekv:rs.raw()){System.out.print(newString(kv.getRow())+"");System.out.print(newString(kv.getFamily())+":");System.out.print(newString(kv.getQualifier())+"");System.out.print(kv.getTimestamp()+"");System.out.println(newString(kv.getValue()));}}2.编写程序(关键代码)(二)HBase编程实例显示所有数据
publicstaticvoidgetAllRecord(StringtableName){try{HTabletable=newHTable(conf,tableName);Scans=newScan();ResultScannerss=table.getScanner(s);for(Resultr:ss){for(KeyValuekv:r.raw()){System.out.print(newString(kv.getRow())+"");System.out.print(newString(kv.getFamily())+":");System.out.print(newString(kv.getQualifier())+"");System.out.print(kv.getTimestamp()+"");System.out.println(newString(kv.getValue()));}}}catch(IOExceptione){e.printStackTrace();}2.编写程序(关键代码)(二)HBase编程实例main方法
publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubtry{Stringtablename="scores";String[]familys={"grade","course"};testHBaseAPI.creatTable(tablename,familys);//addrecordzkbtestHBaseAPI.addRecord(tablename,"zkb","grade","","5");testHBaseAPI.addRecord(tablename,"zkb","course","","90");testHBaseAPI.addRecord(tablename,"zkb","course","math","97");testHBaseAPI.addRecord(tablename,"zkb","course","art","87");2.编写程序(关键代码)//addrecordbaoniutestHBaseAPI.addRecord(tablename,"baoniu","grade","","4");testHBaseAPI.addRecord(tablename,"baoniu","course","math","89");System.out.println("===========getonerecord========");testHBaseAPI.getOneRecord(tablename,"zkb");System.out.println("===========showallrecord========");testHBaseAPI.getAllRecord(tablename);System.out.println("===========delonerecord========");testHBaseAPI.delRecord(tablename,"baoniu");testHBaseAPI.getAllRecord(tablename);System.out.println("===========showallrecord========");testHBaseAPI.getAllRecord(tablename);}catch(Exceptione){e.printStackTrace();}}}在本任务中,我们主要学习了以下内容:HBase常用APIHBase编程实例任务小结1、完成项目五任务一的课后练习题作业谢谢!THANKS!《HBase分布式数据库实战》HBase分布式数据库实战项目五HBaseAPI开发
任务二HBase过滤器详解回顾知识点1
HBase常用API回顾回顾知识点2HBase编程实例任务引入在上一个任务中,我们学习了HBase的常用API以及HBase的编程方法,本任务将学习HBase中的一个重要API——过滤器。
任务概要任务描述:HBase基础API中的查询操作在面对大量数据的时候是非常苍白的,所以Hbase提供了高级的查询方法:Filter。本任务将讲解常见的过滤器用法。任务教学目标:熟悉HBase过滤器的作用和种类。掌握HBase过滤器的编程方法。一HBase过滤器介绍二HBase过滤器分类教学内容HBase过滤器介绍知识点一(一)HBase过滤器介绍HBase过滤器执行流程HBase过滤器分类知识点二(二)HBase过滤器分类1.比较过滤器要完成一个过滤的操作,至少需要两个参数。一个是抽象的操作符,另外一个就是具体的比较器(Comparator)。过滤器的构成比较过滤器的种类抽象操作符抽象操作符说明LESS小于LESS_OR_EQUAL小于等于EQUAL等于NOT_EQUAL不等于GREATER_OR_EQUAL大于等于GREATER大于等于NO_OP无操作1.比较过滤器(二)HBase过滤器分类(二)HBase过滤器分类HBase常用比较过滤器比较器说明BinaryComparator按字节索引顺序比较指定字节数组,采用BpareTo(byte[])BinaryPrefixComparator和BinaryComparator相同,只是比较左端的数据是否相同NullComparator判断给定的是否为空BitComparator按位比较RegexStringComparator提供一个正则的比较器,仅支持EQUAL和非EQUALSubstringComparator判断提供的子串是否出现在value中1.比较过滤器(二)HBase过滤器分类1.比较过滤器RowFilter:基于行键来过滤数据;FamilyFilter:基于列族来过滤数据;QualifierFilter:基于列限定符(列名)来过滤数据;ValueFilter:基于单元格(cell)的值来过滤数据;DependentColumnFilter:指定一个参考列来过滤其他列的过滤器,过滤的原则是基于参考列的时间戳来进行筛选。(二)HBase过滤器分类1.比较过滤器RowFilter、FamilyFilter、QualifierFilter、ValueFilter的使用方法相同,均只要传递比较运算符和运算器实例即可构建,然后通过setFilter方法传递给scan。Filterfilter=newRowFilter(CompareOperator.LESS_OR_EQUAL,newBinaryComparator(Bytes.toBytes("xxx")));scan.setFilter(filter);(二)HBase过滤器分类1.比较过滤器可以把DependentColumnFilter理解为一个valueFilter和一个时间戳过滤器的组合。DependentColumnFilter有三个带参构造器,这里选择一个参数最全的进行说明:DependentColumnFilter(finalbyte[]family,finalbyte[]qualifier,finalbooleandropDependentColumn,finalCompareOperatorop,finalByteArrayComparablevalueComparator)RowFilter:基于行键来过滤数据;FamilyFilter:基于列族来过滤数据;QualifierFilter:基于列限定符(列名)来过滤数据;ValueFilter:基于单元格(cell)的值来过滤数据;DependentColumnFilter:指定一个参考列来过滤其他列的过滤器,过滤的原则是基于参考列的时间戳来进行筛选。(二)HBase过滤器分类2.专用过滤器——单列列值过滤器基于某列(参考列)的值决定某行数据是否被过滤。其实例有以下方法:setFilterIfMissing(booleanfilterIfMissing):默认值为false,即如果该行数据不包含参考列,其依然被包含在最后的结果中;设置为true时,则不包含;setLatestVersionOnly(booleanlatestVersionOnly):默认为true,即只检索参考列的最新版本数据;设置为false,则检索所有版本数据。单列列值过滤器(二)HBase过滤器分类2.专用过滤器——单列列值过滤器SingleColumnValueFiltersingleColumnValueFilter=newSingleColumnValueFilter("student".getBytes(),"name".getBytes(),CompareOperator.EQUAL,newSubstringComparator("xiaolan"));singleColumnValueFilter.setFilterIfMissing(true);scan.setFilter(singleColumnValueFilter);(二)HBase过滤器分类2.专用过滤器——单列列值排除器单列列值排除器SingleColumnValueExcludeFilter继承自上面的单列列值过滤器SingleColumnValueFilter,过滤行为与其相反。单列列值排除器(二)HBase过滤器分类2.专用过滤器——行键前缀过滤器基于RowKey值决定某行数据是否被过滤。行键前缀过滤器PrefixFilterprefixFilter=newPrefixFilter(Bytes.toBytes("xxx"));scan.setFilter(prefixFilter);(二)HBase过滤器分类2.专用过滤器——列名前缀过滤器基于列限定符(列名)决定某行数据是否被过滤。列名前缀过滤器ColumnPrefixFiltercolumnPrefixFilter=newColumnPrefixFilter(Bytes.toBytes("xxx"));scan.setFilter(columnPrefixFilter);(二)HBase过滤器分类2.专用过滤器——分页过滤器可以使用这个过滤器实现对结果按行进行分页,创建PageFilter实例的时候需要传入每页的行数。分页过滤器publicPageFilter(finallongpageSize){Preconditions.checkArgument(pageSize>=0,"mustbepositive%s",pageSize);this.pageSize=pageSize;}(二)HBase过滤器分类2.专用过滤器——时间戳过滤器List<Long>list=newArrayList<>();list.add(1554975573000L);TimestampsFiltertimestampsFilter=newTimestampsFilter(list);scan.setFilter(timestampsFilter);(二)HBase过滤器分类2.专用过滤器——首次行键过滤器FirstKeyOnlyFilter只扫描每行的第一列,扫描完第一列后就结束对当前行的扫描,并跳转到下一行。相比于全表扫描,其性能更好,通常用于行数统计的场景,因为如果某一行存在,则行中必然至少有一列。首次行键过滤器FirstKeyOnlyFilterfirstKeyOnlyFilter=newFirstKeyOnlyFilter();scan.set(firstKeyOnlyFilter);(二)HBase过滤器分类3.Filterlist当需要多个过滤器共同作用于一次查询的时候,就需要使用FilterList。FilterList支持通过构造器或者addFilter方法传入多个过滤器。Filterlist//构造器传入publicFilterList(finalOperatoroperator,finalList<Filter>filters)publicFilterList(finalList<Filter>filters)publicFilterList(finalFilter...filters)//方法传入publicvoidaddFilter(List<Filter>filters)publicvoidaddFilter(Filterfilter)在本任务中,我们主要学习了以下内容:HBase过滤器介绍HBase过滤器分类比较过滤器专用过滤器FilterList任务小结1、完成项目五任务二的课后练习题作业谢谢!THANKS!《HBase分布式数据库实战》HBase分布式数据库实战项目五HBaseAPI开发
任务三HBase计数器详解回顾知识点1
HBase过滤器介绍回顾回顾知识点2HBase过滤器分类任务引入本任务将介绍HBase中另一个重要的API——计数器,HBase中的计数器是为了防止多个客户端的资源竞争问题引入的概念,将列当做一个计数器,客户端API提供了专门方法进行读取并修改(Readandmodify),保证一次客户端操作的原子性。同时计数器可以方便、快速地进行计数操作,用来做点击统计,增长的id这类需要每次都保证线程安全的场景。任务概要任务描述:为了保证原子性地完成客户端请求,HBase引入了计数器的概念。本任务主要简要概述一下HBase计数器的使用及应注意的一些问题。任务教学目标:熟悉HBase计数器的作用。掌握HBase计数器的使用方法。一使用Shell命令行操作计数器二单计数器JavaAPI教学内容三多计数器JavaAPI使用Shell命令行操作计数器知识点一(一)使用Shell命令行操作计数器通过上面介绍可知,计数器在HBase中存储值得本质即是某一列,而列则是在做具体的值操作时才会显式出现,而在创建表的时候不会出现,因而在创建计数器时指定表名与列族即可,现在创建表名counters,列族分别是daily、weekly、monthly:使用Shell操作计数器hbase(main):006:0>create'counters','daily','weekly','monthly'0row(s)in2.2920seconds(一)使用Shell命令行操作计数器在操作计数器的时候只有一种操作,那就是加法操作,如果你想让一个计数器的值减1,则‘increment-value’这个参数为-1即可计数器加法规则计数器加法规则值作用比零大的值按给定的值增加计数器的值零得到计数器当前的值,不增也不减比零小的值按给定的值减少计数器的值(一)使用Shell命令行操作计数器使用如下命令可以查看一个计数器的值:使用Shell操作计数器get_counter'table''rowKey''column'比如读取‘daily:hits’计数器的值:hbase(main):012:0>get_counter'counters','20211029','daily:hits'COUNTERVALUE=1单计数器JavaAPI知识点二(二)单计数器JavaAPI在使用计数器时,绝大多数情况下是通过JavaAPI来使用,现来介绍单计数器。单计数器顾名思义就是一次操作只能操作一个计数器,用户需要自己设置列,方法由HTable类提供,方法签名如下:单计数器JavaAPIlongincrementColumnValue(byte[]row,byte[]family,byte[]qualifier,longacount)throwsIOExceptionlongincrementColumnValue(byte[]row,byte[]family,byte[]qualifier,longacount,booleanwriteToWAL)throwsIOException多计数器JavaAPI知识点三(三)多计数器JavaAPI单计数器每一次只允许操作一个计数器,如果一行中多个列都是计数器则需要将代码重复编写,因此HBase的HTable类提供了另外一个方法,可以一次操作同一行的多个计数器,方法签名如下。多计数器JavaAPIResultincrement(Incrementincrement)throwsIOException要使用该方法必须先创建Increment实例,同时往该实例填充必要的计数器信息,构造方法如下多计数器JavaAPIIncrement(byte[]row)Increment(byte[]row,RowLockrowLock)在本任务中,我们主要学习了以下内容:使用Shell命令行操作计数器HBase过滤器分类单计数器JavaAPI多计数器JavaAPI任务小结1、完成项目五任务三的课后练习题作业谢谢!THANKS!《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'(二)协处理的加载方式第一步,禁用表。第二步,移除表协处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 注册会计师《财务成本管理》考试复习题库(附答案)
- 前置胎盘孕妇健康教育查房
- 中医儿科护理的持续改进
- 启航化工厂安全生产标准化制度汇编
- 2026年农村电商物流异常预警机制优化题库
- 中国外运股份有限公司财务报表分析
- 岳阳市云溪区2025届数学四下期末学业水平测试模拟试题(含解析)
- 【企业合并财务风险分析及其防范对策-以格力电器收购盾安环境为例10000字(论文)】
- 岚县2025-2026学年四年级数学第二学期期中学业质量监测模拟试题含解析
- 山西省长治市城区东关小学2025届四下数学期中统考试题含答案
- (2026年)如何做好艾滋病患者的全程管理课件
- AI在生物质能源与材料中的应用
- 眉山市东坡区招聘社区网格员真题附答案详解
- 前列腺问题常见表现阐释及护理建议
- 2026春小学美术冀美版(2024)三年级下册教案(附目录)
- 2026年小学生科学实验技能竞赛试题试卷考试及答案
- 2026年生物制药研发技术职称考试题库
- 老子清廉思想课件
- 充电桩工程施工方案 (一)
- 农业种植技术考试试题及答案详解
- 重症医学科心肌梗塞抗凝治疗要点培训指南
评论
0/150
提交评论