《HBase课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案合集最新课件汇编.pptx》由会员分享,可在线阅读,更多相关《HBase课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案合集最新课件汇编.pptx(135页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CONTENTS第一章第一章 HBase介介绍绍ITEMS1 第二章第二章 HBase模型和系模型和系统统架构架构ITEMS2第三章第三章 HBase数据数据读读写流程写流程ITEMS3 第四章第四章 HBase环环境搭建境搭建ITEMS4第五章第五章 HBase ShellITEMS5 第六章第六章 HBase程序开程序开发发 ITEMS6第七章第七章 HBase高高级级特性特性ITEMS7 第八章第八章 MapReduce On HBaseITEMS81 HBase介介绍绍HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBa
2、se。Apache HBase是Google BigTable的开源实现,就像BigTable利用了GFS所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于BigTable的能力1.1 面向行和面向列存面向行和面向列存储对储对比比1.1.1 数据数据库库以行、列的二以行、列的二维维表的形式存表的形式存储储数据数据1.1.2 列式数据列式数据库库把一列中的数据把一列中的数据值值串在一起存串在一起存储储起来,然后再存起来,然后再存储储下一列的数据下一列的数据1.1.3 两种存两种存储储方式的方式的对对比比ididnamenameageagesexsexjobsjobs1 1张三张
3、三3535男男教师教师2 2李丹李丹1818女女学生学生3 3JohnJohn2626男男ITIT工程师工程师idid1 12 23 3namename张三张三李丹李丹JohnJohnageage男男女女男男sexsex353518182626表1-3 行/列存储对比 行存储行存储列存储列存储优点优点写入效率高,提供数据完整性保证。写入效率高,提供数据完整性保证。读取过程有冗余,适合数据定长的大读取过程有冗余,适合数据定长的大数据计算。数据计算。缺点缺点数据读取有冗余现象,影响计算速度。数据读取有冗余现象,影响计算速度。缺乏数据完整性保证,写入效率低。缺乏数据完整性保证,写入效率低。改进改进优
4、化的存储格式,保证能够在内存快优化的存储格式,保证能够在内存快速删除冗余数据。速删除冗余数据。多磁盘多线程并行写入多磁盘多线程并行写入/读读(需要增加需要增加运行成本和修改软件运行成本和修改软件)。应用环境应用环境商业领域,互联网。商业领域,互联网。互联网。互联网。1.2 HDFS分布式存分布式存储储特点特点HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。1.优点(1)高容错性(2)适合大数据的处理(3)流式文件写入(4)可构
5、建在廉价机器上2.缺陷(1)不适合低延迟数据访问(2)无法高效存储大量的小文件(3)不支持多用户写入及任意修改文件1.3 HBase的使用的使用场场景景HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是关系型数据库不能处理的。1.平台类2.内容服务类3.信息展示类2.1 HBase相关概念相关概念HBase的数据模型也是由一张张的表组成,每一张表里也有数据行和列,但是在HBase数据库中的行和列又和关系型数据库的稍有不同。1.Table(表)2.Row(行)3.Column(列)4.Column Family(列族)5.Column Qualifier(列标识符)6.Cell
6、(单元格)7.Timestamp(时间戳)2.2 HBase逻辑逻辑模型模型HBase是一个类似BigTable的分布式数据库,它是一个稀疏的长期存储的(存储在硬盘上)、多维度的、排序的映射表,这张表的索引是行关键字、列关键字和时间戳,HBase中的数据都是字符串,没有类型。表2-1 HBase的逻辑模型行健行健时间戳时间戳列族列族anchoranchor列族列族infoinfodatabase.software.wwwt4t4anchor:tel=01012345678info:PC=100000t3t3anchor:name=JamesJames t2t2 info:address=Bei
7、Jingt1t1anchor:name=John c c.software.wwwt3t3 info:address=BeiJingt2t2anchor:tel=01012345678 t1t1anchor:name=JamesJames2.3 HBase物理模型物理模型虽然从逻辑模型来看每个表格是由很多行组成的,但是在物理存储上面,它是按照列来保存的。表2-2 HBase的物理模型行健行健时间戳时间戳列列单元格单元格(值值)database.software.wwwt1t1anchor:nameJohndatabase.software.wwwt2t2info:addressBeiJingd
8、atabase.software.wwwt3t3anchor:nameJamesJamesdatabase.software.wwwt4t4anchor:tel01012345678database.software.wwwt4t4info:PC100000c c.software.wwwt1t1anchor:nameJamesJamesc c.software.wwwt2t2anchor:tel01012345678c c.software.wwwt3t3info:addressBeiJing2.4 HBase的特点的特点非关系型数据库严格上不是一种数据库,而是一种数据结构化存储方法的集合。
9、HBase作为一个典型的非关系型数据库,仅支持单行事务,通过不断增加集群中节点数据量来增加计算能力,其具有以下特点。1.容量巨大2.面向列3.稀疏性4.数据多版本5.可扩展性6.高可靠性7.高性能8.数据类型单一2.5 HBase系系统统架构架构HBase同样是主从分布式架构,它隶属于Hadoop生态系统,由以下组件组成:Client,ZooKeeper,HMaster,HRegionServer和HRegion;在底层,它将数据存储于HDFS中2.5 HBase系系统统架构架构2.5.1 ClientClient包含访问HBase的接口,使用RPC机制与HMaster和HRegionServ
10、er进行通信并维护Cache来加快对HBase的访问,比如HRegion的位置信息。2.5.2 ZooKeeperZooKeeper的引入使得Master不再是单点故障,通过选举,保证任何时候集群中只有一个处于Active状态的Master,HMaster和HRegionServer启动时会向ZooKeeper注册。2.5.3 HMasterHMaster是HBase集群的主控服务器,负责集群状态的管理维护。(1)管理用户对表的增、删、改、查操作。(2)为HRegionServer分配HRegion。(3)管理HRegionServer的负载均衡,调整HRegion分布。(4)发现失效的HRe
11、gionServer并重新分配其上的HRegion。(5)当HRegion切分后,负责两个新生成HRegion的分配。(6)处理元数据的更新请求。3.1 HRegionServer详详解解HRegionServer一般和DataNode在同一台机器上运行,实现数据的本地性。3.1 HRegionServer详详解解3.1.1 WAL 1.WAL滚动 2.WAL失效 3.WAL删除3.1.2 MemStore MemStore是一个写缓存(In Memory Sorted Buffer),所有数据的写在完成WAL日志写后,会写入MemStore中,由MemStore根据一定的算法将数据Flush
12、到底层HDFS文件中(HFile)。3.1 HRegionServer详详解解3.1.3 BlockCache 客户的读请求会先到MemStore中查数据,若查不到就到BlockCache中查,再查不到就会从磁盘上读,并把读入的数据同时放入BlockCache。HBase RegionServer包含三个级别的Block优先级队列:(1)Single队列,如果一个Block第一次被访问,则放在这一优先级队列中。(2)Multi队列,如果一个Block被多次访问,则从Single队列移到Multi队列中。(3)InMemory队列,如果一个Block是InMemory的,则放到这个队列中。3.1
13、 HRegionServer详详解解3.1.4 HFile HBase的数据以KeyValue(Cell)的形式顺序的存储在HFile中,在MemStore的Flush过程中生成HFile,在HFile中的数据是按Row Key,Column Family,Column排序,对相同的Cell(即这三个值都一样)则按Timestamp倒序排列。1.数据块2.元数据块3.FileInfo4.数据块索引5.元数据块索引6.文件尾表3-1 HFile组成部分名称名称描述描述数据块由多个lock(块)组成,每个块的格式为:块头 +Key长 +Value长 +Key +Value。元数据元数据是Key-V
14、alue类型的值,但元数据块只保存元数据的Value值,元数据的Key值保存在第五项(元数据索引块)中。该块由多个元数据值组成。块该块保存与HFile相关的一些信息。FileInfo是以Key值排序Key-Value类型的值,基本格式为:KeyValue元素的个数+(Key+Value类型id+Value)+(Key+Value类型id+Value)+数据索引块该块的组成为:索引块头+(数据块在文件中的偏移+数据块长+数据块的第一个Key)+(数据块在文件中的偏移+数据块长+数据块的第一个Key)+元数据索引块该块组成格式同数据块索引,只是部分的意义不一样,组成格式:索引块头+(元数据在文件中
15、的偏移+元数据Value长+元数据Key)+(元数据在文件中的偏移+元数据Value长+元数据Key)+文件尾该块记录了其他各块在HFile文件中的偏移信息和其他一些元信息。组成格式如下:文件尾+Fileinfo偏移+数据块索引偏移+数据块索引个数+元数据索引偏移+元数据索引个数+数据块中未压缩数据字节数+数据块中全部数据的Key-Value个数+压缩代码标识+版本标识3.1 HRegionServer详详解解3.1.5 HRegionServer的恢复的恢复 当一台HRegionServer宕机时,由于它不再发送心跳包给ZooKeeper而被监测到,此时ZooKeeper会通知HMaster
16、,HMaster会检测到哪台HRegionServer宕机,它将宕机的HRegionServer中的HRegion重新分配给其它的HRegionServer,同时HMaster会把宕机的HRegionServer相关的WAL拆分分配给相应的HRegionServer(将拆分出的WAL文件写入对应HRegionServer的WAL目录中,并写入相应的DataNode),从而使这些HRegionServer可以滚动分到的WAL来重建MemStore。3.1.6 HRegionServer的上的上线线下下线线 HMaster使用ZooKeeper来跟踪HRegionServer状态。当某个HRegi
17、onServer启动时,会首先在ZooKeeper上的Server目录下建立代表自己的文件,并获得该文件的独占锁。3.2 HRegion在HBase中,一个表的表行的多少决定了HRegion的大小,表的列族个数又决定了Store的多少,一个Store对应一个MemStore和多个StoreFile,StoreFile则对应一个HFileHBase表创建时候默认就是一个HRegion,在行记录不断增加下,达到一定的数值HRegion会自动切分,变成多个HRegion,每一个HRegion里面由多个Store组成(Store的个数是由HBase表列族个数决定)。3.2 HRegion3.2.1 H
18、Region分配分配 任何时刻,一个HRegion只能分配给一个HRegionServer。HMaster记录了当前有哪些可用的HRegionServer,以及当前哪些HRegion分配给了哪些HRegionServer,哪些HRegion还没有分配。3.2.2 HRegion Split 最初,一个Table只有一个HRegion,随着数据写入增加,如果一个HRegion到达一定的大小,就需要Split成两个HRegion,这个大小由hbase.hregion.max.filesize指定,默认为10GB。3.2.3 HRegion Compact 当文件达到一定数量(默认3)就会触发Com
19、pact操作,多个HFile合并成一个HFile文件,将多个StoreFile文件合并成一个StoreFile,而大文件恰恰又是HDFS所擅长。3.3 HMaster上上线线HMaster启动进行以下步骤:(1)从ZooKeeper上获取唯一一个代表HMaster的锁,用来阻止其它HMaster成为Master。(2)扫描ZooKeeper上的Server目录,获得当前可用的HRegionServer列表。(3)和2中的每个HRegionServer通信,获得当前已分配的HRegion和HRegionServer的对应关系。(4)扫描.META.Region的集合,计算得到当前还未分配的HRe
20、gion,将他们放入待分配HRegion列表。3.4 数据数据读读流程流程(1)-ROOT-HRegion永远不会被Split,保证了最多需要三次跳转就能定位到任意HRegion。(2).META.表每行保存一个HRegion的位置信息,Row Key采用表名+表的最后一样编码而成。(3)为了加快访问,.META.表的全部HRegion都保存在内存中。(4)Client会将查询过的位置信息保存并缓存起来,缓存不会主动失效3.5 数据写流程数据写流程当客户端发起Put等请求时,HBase会执行数据写流程。(1)客户端首先访问ZooKeeper查找-ROOT-表,然后获取.META.表信息。(2)
21、.META.表记录了每个HRegionServer包含HRegion的Row Key范围,根据Row Key找到对应的HRegionServer地址,HRegionServer会将请求匹配到某个具体的HRegion上面。(3)HRegion首先把数据写入WAL。(4)WAL写入成功后,把数据写入缓存MemStore,写完后检查所有MemStore大小的总和是否达到Flush阀值,如果达到,HRegionServer处理Flush请求,将数据写入StoreFile并以HFile的形式存到HDFS上。3.6 删删除数据流程除数据流程HBase删除操作不会立即删除HFile,会先将数据打一个删除标签
22、,当开启一个大的合并,才会将打标记的数据删除,这个大合并消耗比较大的性能,只有在晚上或者资源使用少时才使用。4.HBase环环境搭建境搭建HBase运行环境需要依赖于Hadoop集群,如果Hadoop尚未搭建,可以参考同套教材Hadoop大数据开发相关章节。HBase引入ZooKeeper来管理集群的Master和入口地址,因此需要先安装ZooKeeper,再设置HBase。4.HBase环环境搭建境搭建1 ZooKeeper的安装在ZooKeeper集群环境下只要一半以上的机器正常启动了,那么Zookeeper服务将是可用的。因此,集群上部署Zookeeper最好使用奇数台机器,这样如果有5
23、台机器,只要3台正常工作则服务将正常。在目前的实际生产环境中,一个Hadoop集群最多有三台节点做备用Master,即并不是所有节点都安装ZooKeeper;如果以实验为目的,可以将所有节点都安装ZooKeeper并作为Master使用。1.解压将下载好的ZooKeeper文件上传到Hadoop集群中的master节点,使用命令tar-zxvf zookeeper-3.4.5.tar.gz -C/hadoop/将其解压。2.修改配置文件(1)创建文件夹mkdir/hadoop/zookeeper-3.4.5/data /hadoop/zookeeper-3.4.5/log(2)修改zoo.cf
24、g进入zookeeper的conf目录修改zoo.cfg。cp zoo_sample.cfg zoo.cfg修改zoo.cfg的内容为:dataDir=/hadoop/zookeeper-3.4.5/datadataLogDir=/hadoop/zookeeper-3.4.5/logserver.0=192.168.254.128:2888:3888server.1=192.168.254.129:2888:3888server.2=192.168.254.131:2888:3888除了dataDir的内容为修改外,其他配置信息均为新增。4.HBase环环境搭建境搭建(3)创建myid文件在/
25、hadoop/zookeeper-3.4.5/data文件夹下创建myid文件,将其值修改为0。需要注意的是,zoo.cfg中server.后面的数值必须和“=”后面IP中的myid值保持一致,即IP为192.168.149.129的节点中myid的值必须为1,IP为192.168.149.131的节点中myid的值必须为2。(4)分发到slave1和slave2节点scp-r/hadoop/zookeeper-3.4.5/slave1:/hadoop/scp-r/hadoop/zookeeper-3.4.5/slave2:/hadoop/同时按照第三步要求修改myid文件对应的值3.修改三个
26、节点的环境变量在/etc/profile文件末尾添加export PATH=$PATH:/hadoop/zookeeper-3.4.5/bin,并执行命令source/etc/profile使配置的环境变量生效。4.HBase环环境搭建境搭建本书使用的HBase版本是hbase-1.3.1(不采用1.4.0的原因是该版本基于Hadoop2.7.4平台开发,而本书使用的Hadoop版本是2.6.5,会存在部分版本兼容性问题),可以在Apache的官网下载,下载地址为http:/archive.apache.org/dist/hbase/。1.解压将下载好的HBase文件上传到Hadoop集群中的
27、master节点,使用命令tar-zxvf hbase-1.3.1-bin.tar.gz -C/hadoop/将其解压。2.修改HBase的配置文件(1)修改hbase-env.sh文件新增四项配置export HBASE_CLASSPATH=/hadoop/hadoop-2.6.5/etc/hadoopexport HBASE_PID_DIR=/var/hadoop/pidsexport JAVA_HOME=/Java/jdk1.8.0_144/export HBASE_MANAGES_ZK=false其中HBASE_CLASSPATH是Hadoop的配置文件路径,配置HBASE_PID_D
28、IR时先创建目录/var/hadoop/pids。4.HBase环环境搭建境搭建一个分布式运行的HBase依赖一个Zookeeper集群,所有的节点和客户端都必须能够访问Zookeeper。默认的情况下HBase会管理一个Zookeep集群,即HBase默认自带一个Zookeep集群,这个集群会随着HBase的启动而启动。而在实际的商业项目中通常自己管理一个Zookeeper集群更便于优化配置提高集群工作效率,但需要配置HBase。需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK来切换,这个值默认是true,作用是让HBase启动的时候同时也启动Zookeepe
29、r。在安装过程中,采用独立运行Zookeeper集群的方式,故将其属性值改为false。(2)修改regionservers文件regionservers文件负责配置HBase集群中哪台节点做RegionServer服务器,本书的规划是所有slave节点均可当RegionServer服务器,故其配置内容为:slave1slave24.HBase环环境搭建境搭建(3)修改hbase-site.xml文件hbase-site.xml文件内容修改为:hbase.rootdirhdfs:/192.168.254.128:9000/hbase hbase.master hdfs:/192.168.254
30、.128:60000 hbase.zookeeper.property.dataDir/hadoop/zookeeper-3.4.5/data4.HBase环环境搭建境搭建hbase.cluster.distributedtruehbase.zookeeper.quorummaster,slave1,slave2hbase.zookeeper.property.clientPort2181hbase.master.info.port 600104.HBase环环境搭建境搭建(4)分发到slave1和slave2节点scp-r/hadoop/hbase-1.3.1/slave1:/hadoop/
31、scp-r/hadoop/hbase-1.3.1/slave2:/hadoop/3.修改三个节点的环境变量在/etc/profile文件末尾添加export PATH=$PATH:/hadoop/zookeeper-3.4.5/bin:/hadoophbase-1.3.1-bin.tar.gz/bin,并执行命令source/etc/profile使配置的环境变量生效4.测试在master节点运行start-hbase.sh,将HBase集群启动,可以通过jps或查看运行状况。master节点存在HMaster进程,如图4-7所示:4.HBase环环境搭建境搭建Lorem ipsum dolo
32、r sit amet,consectetur adipisicing elit.Lorem ipsum dolor sit amet,consectetur adipisicing elit.Lorem ipsum dolor sit amet,consectetur adipisicing elit.Lorem ipsum dolor sit amet,consectetur adipisici4.HBase环环境搭建境搭建通过浏览器访问地址http:/192.168.254.128:60010/master-status,可以看到整个HBase集群的状态,如图4-10所示:4.HBase环
33、环境搭建境搭建在master节点,使用命令hbase-daemon.sh stop master,等待一会发现slave1成为master,当HBase的master节点故障后,ZooKeeper会从备份中自动推选一个作为master,如图4-11所示:5 HBase Shell在实际应用中,需要经常通过Shell命令操作HBase数据库。HBase Shell是HBase的命令行工具;通过HBase Shell,用户不仅可以方便地创建、删除及修改表,还可以向表中添加数据、列出表中的相关信息等5.1 HBase Shell启启动动在任意一个HBase节点运行命令:hbase shell,即可进
34、入HBase的Shell命令行模式HBase Shell没法使用退格键删除文字,需要通过ctrl+backspace的方式进行删除,或者通过文件-属性-终端-键盘设置Xshell,将Backspace键序列的值设置为ASCII 1275.1 HBase Shell启启动动HBase Shell的每个命令具体用法,都可以直接输入查看,如输入create,可以看到其用法HBase Shell基本命令操作操作命令表达式说明创建表create table_name,family1,family2,familyN创建表和列族。添加记录put table_name,rowkey,family:column
35、,value向列插入一条数据。查看记录get table_name,rowkey 查询单条记录,也是HBase最常用的命令。查看表中的记录总数count table_name这个命令并不快,且目前没有找到更快的方式统计行数。删除记录delete table_name,rowkey,family_name:columndeleteall table_name,rowkey第一种方式删除一条记录单列的数据;第二种方式删除整条记录。删除一张表 1.disable table_name 先停用,再删除表。2.drop table_name 查看所有记录scan table_name,LIMIT=10L
36、IMIT=10表示只返回10条记录,否则将全部显示。10条记录,否则将全部5.2 表的管理表的管理1.list命令2.create命令 创建表。语法格式:create,NAME=,VERSIONS=3.describe命令4.disable命令 禁用表。语法格式:disable 5.2 表的管理表的管理5.exists 查看一个表是否存在。语法格式:exists 6.is_enabled 判断表是否enable。语法格式:enable 7.is_disabled 判断表是否disable。语法格式:disable 8.alter命令 修改表结构。语法格式:alter,NAME=,NAME=,M
37、ETHOD=delete9.删除列族5.2 表的管理表的管理10.whoami 11.version12.status5.3 表数据的增表数据的增删删改改查查1.put命令 向表中插入数据。语法格式:put,。2.get命令 查询数据。语法格式:get,.3.scan命令 扫描表。语法格式:scan,COLUMNS=,.,LIMIT=num;另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能4.delete命令 删除数据。语法格式:delete,5.deleteall命令6.count 7.truncate5.3 表数据的增表数据的增删删改改查查5.deleteall
38、命令 删除行。语法格式:deleteall,6.count 查询表中总共有多少行数据。语法格式:count。7.truncate 清空表。语法格式:truncate。5.4 数据迁移的数据迁移的importsv的使用的使用HBase数据来源于日志文件或者RDBMS,把数据迁移到HBase表中。常见的有三种方法:使用HBase Put API;使用HBase批量加载工具;自定义MapReduce实现。importtsv是HBase官方提供的基于MapReduce的批量数据导入工具,同时也是HBase提供的一个命令行工具,可以将存储在HDFS上的自定义分隔符(默认是t)的数据文件,通过一条命令方便
39、的导入到HBase中。6.HBase程序开程序开发发HBase提供了丰富的Java API接口供用户使用,可以通过HBase Java API完成和HBase Shell相同的功能。本章不仅介绍如何通过Java API完成表的相关操作,还会讲解相关高级用法,如过滤器、计数器、协处理器的使用,NameSpace的开发和快照的创建等。6.1 表的相关操作表的相关操作1.API介绍 HBase Java API核心类主要有HBaseConfiguration,HBaseAdmin,HTable和数据操作类组成HBase JHBase Java类类HBase数据模型数据模型HBaseAdmin数据库(
40、DataBase)HBaseConfigurationHTable表(Table)HTableDescriptor列族(Column Family)Put列标识符(Column Qualifier)GetScanner6.1 表的相关操作表的相关操作2.HBaseConfiguration HBaseConfiguration位于org.apache.hadoop.hbase.HbaseConfiguration,完成对HBase的配置,主要设置一些关键属性返回值函数说明voidaddResource(Path file)通过给定的路径所指的文件来添加资源。voidclear()清空所有已设置
41、的属性。stringget(String name)获取属性名对应的值。StringgetBoolean(String name,boolean defaultValue)获取为boolean类型的属性值,如果其属性值类型不为boolean,则返回默认属性值。voidset(String name,String value)通过属性名来设置值。voidsetBoolean(String name,boolean value)设置boolean类型的属性值。6.1 表的相关操作表的相关操作3.HBaseAdminHBaseAdmin位于org.apache.hadoop.hbase.client
42、.HbaseAdmin,提供了一个接口来管理HBase数据库的表信息;它提供的方法如表6-3所示,包括:创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。返回值函数说明voidaddColumn(String tableName,HColumnDescriptor column)向一个已经存在的表添加列。voidcheckHBaseAvailable(HBaseConfiguration conf)静态函数,查看HBase是否处于运行状态。voidcreateTable(HTableDescriptor desc)创建一个表,同步操作。voiddeleteTable(byt
43、e tableName)删除一个已经存在的表。voidenableTable(byte tableName)使表处于有效状态。voiddisableTable(byte tableName)使表处于无效状态。HTableDescriptorlistTables()列出所有用户表。voidmodifyTable(byte tableName,HTableDescriptor htd)修改表的模式,是异步的操作,可能需要花费一定的时间。booleantableExists(String tableName)检查表是否存在。6.1 表的相关操作表的相关操作4.HTableDescriptor HTa
44、bleDescriptor位于org.apache.hadoop.hbase.HtableDescriptor,包含了表的名字及其对应表的列族返回值函数说明voidaddFamily(HColumnDescriptor)添加一个列族。HColumnDescriptorremoveFamily(byte column)移除一个列族。bytegetName()获取表的名字。bytegetValue(byte key)获取属性的值。voidsetValue(String key,String value)设置属性的值。6.1 表的相关操作表的相关操作5.HColumnDescriptor HColu
45、mnDescriptor类位于org.apache.hadoop.hbase.HcolumnDescriptor,维护着关于列族的信息,例如版本号,压缩设置等,它通常在创建表或者为表添加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式;列族被删除的时候,列族里面的数据也会同时被删除。返回值函数说明bytegetName()获取列族的名字。bytegetValue(byte key)获取对应的属性的值。voidsetValue(String key,String value)设置对应属性的值。6.1 表的相关操作表的相关操作6.HTable HTable类位于org.ap
46、ache.hadoop.hbase.client.HTable,可以用来和HBase表直接通信,此方法对于更新操作来说是非线程安全的。返回值函数说明voidcheckAndPut(byte row,byte family,byte qualifier,byte value,Put put自动的检查row,family,qualifier是否与给定的值匹配。voidclose()释放所有的资源或挂起内部缓冲区中的更新。Booleanexists(Get get)检查Get实例所指定的值是否存在于HTable的列中。Resultget(Get get)获取指定行的某些单元格所对应的值。bytege
47、tEndKeys()获取当前一打开的表每个区域的结束键值。ResultScannergetScanner(byte family)获取当前给定列族的Scanner实例。HTableDescriptorgetTableDescriptor()获取当前表的HTableDescriptor实例。bytegetTableName()获取表名。static booleanisTableEnabled(HBaseConfiguration conf,String tableName)检查表是否有效。voidput(Put put)向表中添加值。6.1 表的相关操作表的相关操作7.Put Put类位于org
48、.apache.hadoop.hbase.client.Put,用来对单个行执行添加操作。返回值函数说明Putadd(byte family,byte qualifier,byte value)将指定的列和对应的值添加到Put实例中。Putadd(byte family,byte qualifier,long ts,byte value)将指定的列和对应的值及时间戳添加到Put实例中。bytegetRow()获取Put实例的行。RowLockgetRowLock()获取Put实例的行锁。longgetTimeStamp()获取Put实例的时间戳。booleanisEmpty()检查family
49、Map是否为空。PutsetTimeStamp(long timeStamp)设置Put实例的时间戳。6.1 表的相关操作表的相关操作8.Get Get类位于org.apache.hadoop.hbase.client.Get,用来获取单个行的相关信息。返回值函数说明GetaddColumn(byte family,byte qualifier)获取指定列族和列标识符对应的列。GetaddFamily(byte family)通过指定的列族获取其对应的所有列。GetsetTimeRange(long minStamp,long maxStamp)获取指定时间的列的版本号。GetsetFilte
50、r(Filter filter)当执行Get操作时设置服务器端的过滤器。6.1 表的相关操作表的相关操作9.Result Result类位于org.apache.hadoop.hbase.client.Result,用于存储Get或者Scan操作后获取表的单行值,使用此类提供的方法可以直接获取值或者各种Map结构(Key-Value对)。返回值函数说明booleancontainsColumn(byte family,byte qualifier)检查指定的列是否存在。NavigableMapgetFamilyMap(byte family)获取对应列族所包含的修饰符与值的键值对。bytege