




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2页前言HBase是一个高可靠性、高性能、面向列、可伸缩的分布式 数据库,设计目标是用来解决关系型数据库在处理海量数据 时的局限性。本章主要介绍HBase的应用场景、功能与架构、关键流程、 常用命令和参数。第3页目标学完本课程后,您将能够:了解HBase的组成架构熟悉HBase的基本功能第4页目录1.1. HBaseHBase应用场应用场景景HBaseHBase功能与架构功能与架构HBaseHBase关键流程关键流程4.4. HBaseHBase常用命令和参常用命令和参数数第5页简介HBase是一个开源的非关系型分布式数据库(NoSQL),它 参考了谷歌的BigTable建模,实现的编程语言
2、为 Java。HBase是一个分布式存储系统,具有高可靠性、高性能、面向列、可伸缩的特点。HBase利用Hadoop HDFS作为其文件存储系统第6页需求场景HBaseHBase适合具有如下需求的应用适合具有如下需求的应用:海量数据(TB、PB)高吞吐量需要在海量数据中实现高效的随机读取需要很好的性能伸缩能力能够同时处理结构化和非结构化的数据不需要完全拥有传统关系型数据库所具备的ACID特性第7页谁在用HBase ?第8页目录1.1. HBaseHBase应用场应用场景景HBaseHBase功能与架构功能与架构HBaseHBase关键流程关键流程4.4. HBaseHBase常用命令和参常用命
3、令和参数数第9页部署架构 架构第10页HBase模块 RegionRow001 Row002.Row010Row011 Row012.Row020Row021Row022. Row030Row031.Region-1StartKey,EndKeyRegion-2StartKey,EndKeyRegion-3StartKey,EndKeyRegion-4StartKey,EndKey 将一个数据表按Key值范围横向划分为一个个 的子表,实现分布式存储。 这个子表,在HBase中被称作“Region”。每一个Region都关联一个Key值范围,即一个 使用StartKey和EndKey描述的区间。
4、事实上,每 一个Region仅仅记录StartKey就可以了,因为它 的EndKey就是下一个Region的StartKey。Region是HBase分布式存储的最基本单元。TableName? StartKey?RegionRow001Row002.Row010Row011Row012.Row020Row021Row022.Row030Row031.第11页HBase模块 Region与RegionServerRegionServer是HBase的数据服务进程。负责处理 用户数据的读写请求。Region被交由RegionServer管理。实际上,所有 用户数据的读写请求,都是和RegionS
5、erver上的 Region进行交互。Region可以在RegionServer之间发生转移。RegionRegionRegionServer思考:一个RegionRegion包含了一个StartkeyStartkey和EndKeyEndKey范围;一条用户数据KeyValueKeyValue必然属于一个唯一的RegionRegion; RegionRegion由RegionServerRegionServer来管理,那么,这个路由信 息保存在哪里呢?RegionRegion如何才可以转移?由谁负责转移?Region第12页HBase模块 Region分类Region分为元数据Region以及
6、用 户Region两类。Meta Region记录了每一个User Region的路由信息。读写Region数据的路由,包括如下 几步:找寻Meta Region地址。再由Meta Region找寻User Region地址。RegionRegionRegionRegionRegionMETARegion第13页HBase模块 HMaster Master进程负责管理所有的RegionServer。新RegionServer的注册。 RegionServer Failover处理。 负责建表/修改表/删除表以及一些集群操作。 Master进程负责所有Region的转移操作。 新表创建时的Reg
7、ion分配。 运行期间的负载均衡保障。 RegionServer Failover后的Region接管。 Master进程有主备角色。集群可以配置多个 Master角色,集群启动时,这些Master角色通过竞 争获得主Master角色。主Master只能有一个,所有 的备Master进程在集群运行期间处于休眠状态,不 干涉任何集群事务。疑问: 主备Master进程角色是如何进行裁决的?RegionServerRegionServerRegionServer“Hey, Region-A! Please move to RegionServer2!”“RegionServer1 was gone!
8、 Let others take control of it!”“Good! 1 new RegionServer iscoming.”第14页HBase模块 Zookeeper 提供分布式锁的服务提供分布式锁的服务例如例如,多个Master进程竞争主Master角色时,怎么样 保证仅有一个Active角色存在?这就需要一个分布式的 锁机制来保证。多个Master进程都尝试着去 ZooKeeper中写入一个对应的节点,该节点只能被一个 Master进程创建成功,创建成功的Master进程就是 Active角色。提供了事件监听机制提供了事件监听机制例如例如,主Master进程宕掉之后,其它的备M
9、aster如何 能够快速的接管?这个过程中,备Master在监听那个 对应的ZooKeeper节点。主Master进程宕掉之后,该 节点会被删除,那么,其它的备Master就可以收到相 应的消息。个别场景,可充当一个微型数据库角色个别场景,可充当一个微型数据库角色例如例如,在ZooKeeper中存放了Region Server的地址, 此时,可以将它理解成一个微型数据库。“Master-1, Congratulations! You are the active one!”“Sorry, Master-2. The active seat has been taken by others. P
10、lease be patient!”第15页数据结构介绍 三种结构具有固定的结构,属性划分,以及类型等信息具有固定的结构,属性划分,以及类型等信息。我们通常所理解的关系 型数据库中所存储的数据信息,大多是结构化数据, 如职工信息表,拥 有ID、Name、Phone、Address等属性信息。通常直接存放在数据库表中。数据记录的每一个属性对应数据表的一个 字段。结构化数据非结构化数据半结构化数据无法用统一的结构来表示无法用统一的结构来表示,如文本文件、图像、视频、声音、网页等信 息。数据记录较小时(如KB级别),可考虑直接存放到数据库表中(整条记录 映射到某一个列中),这样也有利于整条记录的快速
11、检索。数据较大时,通常考虑直接存放在文件系统中。数据库可用来存放相关 数据的索引信息。具有一定的结构,但又有一定的灵活可变性具有一定的结构,但又有一定的灵活可变性。典型如XML、HTML等数 据。其实也是非结构化数据的一种。可以考虑直接转换成结构化数据进行存储。根据数据记录的大小和特点,选择合适的存储方式。这一点与非结构化 数据的存储类似。第16页数据结构介绍 按行存储按列存储IDIDNamName eAddresAddress sPhonePhone按行存储按行存储:数据按行存储在底层文件系统中。通常,每一 行会被分配固定的空间。 优点优点:有利于增加/修改整行记录等操作; 有利于整行数据的
12、读取操作; 缺点缺点:单列查询时,会读取一些不必要 的数据。按列存储按列存储:数据以列为单位,存储在底层文件系统中。 优点优点:有利于面向单列数据的读取/统计等操作。 缺点缺点:整行读取时,可能需要多次I/O操 作。可以看出,无论是按行存储,还是按列存储,可以看出,无论是按行存储,还是按列存储,都有明显的优缺点。是否存在一种折衷的方都有明显的优缺点。是否存在一种折衷的方案?案?IDNamePhoneAddress第17页数据结构介绍 KeyValue结构(1)IDIDNamName eAddresAddress sPhonePhoneKeyValue具有特定的结构。Key部分被用来快速的检索一
13、条数据记录,Value部分用来存储实际的用户数据信息。KeyValue作为承载用户数据的基本单元,需要保存一些对自身的描述信息,例如,时间戳,类型等等。那么,势必 会有一定的结构化空间开销。一个Key值对应一个Value?还是一个Key值可以对应多个Value?Value-Value-ID01ID01Key-Key-0101Value-Value-Name01Name01Key-Key-0101Value-Value-Phone01Phone01Key-Key-0101Value-Value-Address01Address01Key-Key-0101Relational DatabaseRe
14、lational Database KeyValue DatabaseKeyValue DatabaseDatabase contains tables, tables contain columns and rows, and rows are made up of column values. Rows within a table all have the same schema.The data model is well defined in advance. A schema is strongly typed and it has constraints and relation
15、ships that enforce data integrity.The data model is based on a “natural” representation of the data it contains, not on an applications functionality.The data model is normalized to remove data duplication. Normalization establishes table relationships.Relationships associate data between tables.Dom
16、ains can initially be thought of like a table, but unlike a table you dont define any schema for a domain. A Domain is basically a bucket that you put items into. Items within a single domain can have differing schemas.Items are identified by keys, and a given item can have a dynamic set of attribut
17、es attached to it.In some implementations, attributes are all of a string type. In other implementations, attributes have simpletypes that reflect code types, such as ints, string arrays, and lists.No relationships are explicitly defined between domains or within a given domain.第18页数据结构介绍 KeyValue结构
18、(2)初始运行阶段,将Hash环划分为几个相等弧长 的区间,每一个Hash区间对应一个Node。对用户数据KeyValue的Key值进行Hash,落到 哪个Hash区间,就属于哪个Node。节点出现宕机时,将由该节点顺时针方向的下 一个节点接管相应的数据,避免出现大范围的Re- Hash操作。新节点加入时,从上一个节点到新节点之间的 数据,需要Re-Hash到新的节点中。一致性Hash尽管一定程度上可以保证负载的均 匀性,但在节点频繁宕机,或频繁重启的情形下, 可能会导致负载的极不均匀。KeyValue型数据库数据分区方式-一致性Hash分区第19页数据结构介绍 KeyValue结构(3)01
19、02050603040708091011121314151601050206091310140307111504081216数据按照RowKey的范围(按一定的排序算法排序的结果,如按RowKey的字典顺序),划分为一个个的子区间。每 一个子区间都是一个分布式存储的基本单元Node1Node2Node3Node4KeyValue型数据库数据分区方式-按Key值连续范围分区第20页HBase数据模型 Column Family/hbase/table/region-1/region-2/region-3HDFSColumnFamily是Region的一个物理存储单元。同一个Region下面的多个
20、ColumnFamily,位于不同的路径下面。ColumnFamily信息是表级别的配置。也就是说,同一个表的多个Region,都拥有相同的ColumnFamily信息(例如,都有两个ColumnFamily,且不同Region的同一个ColumnFamily配置信息相同)/hbase/table/region-1/ColumnFamily-1/region-1/ColumnFamily-2/region-2/ColumnFamily-1/region-2/ColumnFamily-2/region-3/ColumnFamily-1/region-3/ColumnFamily-2RegionR
21、egionRegionRegion思考:ColumnFamily = HBase面向列存储?第21页HBase数据模型 KeyVaueHBase的底层数据都是以KeyValue的形式存在的。KeyValue具有特定的格式。KeyValue中拥有时间戳、类型等关键信息。同一个Key值可以关联多个KeyValue,每一个KeyValue都拥有一个Qualifier标识。即使是Key值相同,Qualifier也相同的多个KeyValue,也可能有多个,此时使用时间戳来区分,这就是同一条 数据记录的多版本多版本。/hbase/table/region-1/ColumnFamily-1/region-1
22、/ColumnFamily-2/region-2/ColumnFamily-1/region-2/ColumnFamily-2/region-3/ColumnFamily-1/region-3/ColumnFamily-2HFile第22页HBase数据模型 HFile从从HFileHFile文件中读取数据的流程文件中读取数据的流程:TrailerRoot Data IndexMeta IndexFileInfo.Leaf Data IndexLeaf Data IndexLeaf Data IndexData BlockData BlockData Block第23页目录1. HBase应用
23、场景应用场景2.HBase功能与架构3. HBase关键流程关键流程4. HBase常用命令和参数常用命令和参数第24页写流程 涉及的关键角色RegioRegion nRegionServeRegionServer rZooKeepeZooKeeper rClienClient t第25页写流程 客户端发起写数据请求Client客户端写数据代码示例:客户端写数据代码示例:/ 初始化配置信息Configuration conf = HBaseConfiguration.create();/ 插入一行数据HTable table = new HTable(conf, tableName);Put
24、put = new Put(Bytes.toBytes(012005000201); put.add(FAMILIES, Bytes.toBytes(name), Bytes.toBytes(张三); put.add(FAMILIES, Bytes.toBytes(gender), Bytes.toBytes(男);put.add(FAMILIES, Bytes.toBytes(address), Bytes.toBytes(广东省深圳市);table.put(put);构建构建PutPut对象:对象:一个Put对象代表一行数据记录,可以添加多个列的数据。 如上例所示,RowKey为“0120
25、05000201”,包含3个列:name,gender,address。Put or PutList?Put or PutList?HBase提供了两个主要的写数据接口,一个可以写入单行数据,即Put接口,另一个可以批量写入多行数据,即PutList接口。事实上,Put仅是PutList的一种特殊情形。因此,后面的流程介绍仅仅涉及PutList。第26页写流程 定位RegionUser RegionMETARegionRegion Location第27页写流程 数据分组整个数据分组,涉及到两步整个数据分组,涉及到两步“分篮子分篮子”操作操作: 将所有的记录按Region划分。将所有的记录按R
26、egionServer划分。每个RegionServer上的数据会一起发送,这 样,发送的数据中,都是已经按照Region分 好组了。第28页写流程 往RegionServer发送写数据请求利用HBase自身封装的RPC框架,来完成数据发送操作。往多个RegionServer发送请求是并行 操作。客户端发送完写数据请求后,会自动 等待请求处理结果。如果客户端没有捕获到任何的异常,则认为所有的数据都已经被写入成功。如果全部写入失败,或者部分写入失败,客户端能够获知详细的失败Key值列表。从这里也可以看出,PutList操作是不 保证原子性的。第29页写流程 Region写数据流程获取Region
27、操作锁依次获取各行行锁写入到MemStore中写数据到WAL中释放已获取的行锁释放Region锁读写锁既然是Write- Ahead-Log,为何 先写内存再写WAL?一个内存排序集合HBase提供了一个MVCC机制,来保障写数据阶段的 数据可见性。先写MemStore再写WAL,是为了一些 特殊场景下,内存中的数据能够更及时的可见。如 果写WAL失败的话,MemStore中的数据会被回滚。第30页写流程 HBase LSM Tree 将Put/Delete的数据暂时保存在每个Region的内存中,即MemStore中。写内存,避免多写内存,避免多RegionRegion情形下带来的过多情形下
28、带来的过多 的分散的分散IOIO操作。操作。 数据在写入到MemStore之后,也会顺序顺序 写写入到HLog中,来保证数据的安全。第31页写流程 FlushRegionMemStore-1(ColumnFamily-1)MemStore-2(ColumnFamily-2)HFileHFile存在如下两种场景,会触发一个Region的Flush操作:该Region的MemStore的总大小,达到了预设的Flush Size阈值。这种场景下的 Flush操作,通常仅瞬间堵塞用户的读写操作。但如果超出预设Flush Size阈值 过多的话,也可能会引起较长时间的堵塞。 RegionServer的总
29、内存大小超出了预设的阈值大小。这种场景下,在总内存没 有降低到预设的阈值以下之前,可能会较长时间堵塞。第32页写流程 多HFile的影响随着时间的不断迁移,随着时间的不断迁移,HFileHFile文件数目越来越多,读取时延也越来越大文件数目越来越多,读取时延也越来越大!第33页写流程 Compaction CompactionCompaction的主要目的,是为了减的主要目的,是为了减少同一个少同一个RegionRegion同一个同一个ColumnFamily ColumnFamily 下面的小文件数目,从而提升读取的下面的小文件数目,从而提升读取的性能。性能。 CompactionCompa
30、ction分为分为MinorMinor、MajorMajor两类:两类:Minor:小范围的Compaction。有最 少和最大文件数目限制。通常会选择 一些连续时间范围的小文件进行合并。Major:涉及该Region该ColumnFamily下面的所有的HFile文件。Major Compaction过程中,会清理被 删除的数据。 Minor CompactionMinor Compaction选取文件时,遵选取文件时,遵 循一定的算法。循一定的算法。HFileHFileHFileHFileHFileHFileMinor CompactionHFileMemStoreputHFileHFil
31、eHFileHFileMajor CompactionFlushWrite第34页写流程 SplitDaughter Region-1Daughter Region-2 普通的Region Split操作,是指集群运行期间,某一 个Region的数据大小超出了预设的阈值,则需要将该 Region自动分裂成为两个子Region。 分裂过程中,被分裂的Region会暂停一些读写服务。 由于分裂过程中,父Region的数据文件并不会真正的 分裂并重写到两个子Region中,而是仅仅通过在新 Region中创建引用文件的方式,来实现快速的分裂。 因此,Region暂停服务的时间会比较短暂。 客户端侧所
32、缓存的父Region的路由信息需要被更新。思考:思考:普通的普通的Region Split操作,为何仅仅将操作,为何仅仅将一一 个个Region分裂成两个分裂成两个Region?能否分能否分裂成裂成 多个?多个?Parent Region第35页读流程 Get or ScanRegionScanGetGetGet操作代码示例:操作代码示例: HTable table = null; try table = new HTable(conf, tableName);Get get = new Get(rowKey.getBytes();/ 设定列族名和列名设定列族名和列名get.addColumn
33、(family, qualifier);/ 设定列族名设定列族名get.addFamily(family);Result result = table.get(get);for (KeyValue kv : result.raw() System.out.println(kv.getRow() + + (kv.getFamily() + + (kv.getQualifier() + + kv.getTimestamp() + + kv.getValue() + ); catch (IOException e) / TODO finally if (null != table) try tabl
34、e.close(); catch (IOException e) / TODOscan.setCaching(1000);GetGet操作在提供精确的操作在提供精确的KeyKey值的情形下,读取单行用户数据值的情形下,读取单行用户数据ScanScan操作代码示例:HTable table = null; ResultScanner rScanner = null; try table = new HTable(conf, tableName); Scan scan = new Scan(); scan.setStartRow(startRow);scan.setStopRow(stopRow)
35、;/ 重要参数:每次RPCRPC从服务端取回的记录数rScanner = table.getScanner(scan);for (Result r = rScanner.next(); r != null; r = rScanner.next()for (KeyValue kv : r.raw() / TODO catch (IOException e) / TODO finally if (null != rScanner) rScanner.close();if (null != table) try table.close(); catch (IOException e) / TODOS
36、canScan操作是为了批量扫描限定KeyKey值范围内的用户数据第36页读流程 OpenScannerRegionColumnFamily-1 MemStoreHFile-11 HFile-12 HFile-13ColumnFamily-2 MemStoreHFile-21 HFile-22 HFile-23思考:一个Region可能有多个列族一个列族,可能包含有多个HFile文件,同时,还有部分数据存在于MemStore中,尚未固 化如何读取,才可以读到想要的用户数据?OpenScanner的过程,会为MemStore,以及各个HFile创建所对应的Scanner: MemStore对应的
37、Scanner为MemStoreScanner。 HFile对应的Scanner为StoreFileScanner。第37页读流程 NextScanner A Current KeyValue: Row01,FamiA:col1Scanner B Current KeyValue: Row01,FamiB:col1Scanner C Current KeyValue: Row01,FamiC:col1Scanner D Current KeyValue: Row01,FamiD:col1Scanner AScanner B Current KeyValue: Row01,FamiB:col1S
38、canner C Current KeyValue: Row01,FamiC:col1Scanner D Current KeyValue: Row01,FamiD:col1PollFinished?YcloseThis is a PriorityQueue, it uses a Comparator to sort all elements.Scanner A Current KeyValue: Row01,FamiA:col2Scanner B Current KeyValue: Row01,FamiB:col1Scanner C Current KeyValue: Row01,FamiC
39、:col1Scanner D Current KeyValue: Row01,FamiD:col1Suppose the scanning for Row01 is not finished in Scanner A. So this scanner will still present at the first place of the QueueScanner A Current KeyValue: Row02,FamiA:col1N: Put backScanner AFinished?YcloseN: Put backPollSuppose the scanning for Row01
40、 is finished in Scanner A. So this scanner will be put at the end of the Queue. 每一个Scanner中,都有一个指 针,指向接下来要读取的用户数据 KeyValue是哪一个。 同一级的Scanner,被放在同一 个优先级队列中。通过不断的对比 每一个Scanner的指针所指向的 KeyValue,将这些Scanner进行排 序。 每一次next请求,都是从该优 先级队列中,Poll出一个Scanner, 然后,读取该Scanner的当前指针 所指向的KeyValue即可。 每一次读完一个Scanner,指针 都会往
41、下移一个KeyValue。而后, 该Scanner被返还到队列中。如果 已经读完,则直接关闭。nextnext第38页读流程 FilterScanScan过程中使用过程中使用FilterFilter代码示例:代码示例:Scan s = new Scan();/ 前缀过滤器,查找前缀过滤器,查找RowKeyRowKey以以“132”开头的行开头的行s.setFilter(new PrefixFilter(Bytes.toBytes(132);/ 查找符合条件的查找符合条件的6行数据行数据s.setFilter(new PageFilter(6);/ 多个过滤器结合使用多个过滤器结合使用Filte
42、rList list = new FilterList(Operator.MUST_PASS_ALL);list.addFilter(new SingleColumnValueFilter(family, qualifier,CompareOp.EQUAL, value); list.addFilter(new PageFilter(6); s.setFilter(list); Filter允许在Scan过程中,设定一定的过滤条件。符合条件的用户数据才返回。当前包含的一些典型的Filter有:RowFilterSingleColumnValueFilterKeyOnlyFilterFilter
43、List使用Filter时,可能会扫描大量的用户数据,才可以找到所期望的满足条件的数据。因此,一些场景下的性能是不可预估的。 SaSat tisisf fiedied RowRow SaSat tisisf fiedied RowRow SaSat tisisf fiedied RowRow第39页读流程 BloomFilter BloomFilter被用来优化一些随机读取的场景, 即Get场景。 它可以被用来快速的判断一条用户数 据在一个大的数据集合(该数据集合的大部分数据 都没法被加载到内存中)中是否存在。右图给出了BloomFilter的基础原理。 BloomFilter在判断一个数据是
44、否存在时,拥有 一定的误判率。但对于“用户数据 XXXX不存在” 的判断结果是可信的。HBase的BloomFilter的相关数据,被保存在 HFile中。数据写入阶段,对用户数据进行数据写入阶段,对用户数据进行N N次次HashHash,并且将映射到的对应的位改为,并且将映射到的对应的位改为1数据读取阶段,对用户数据进行数据读取阶段,对用户数据进行N N次次HashHash,判断对应的位是否为,判断对应的位是否为1第40页目录1.1. HBaseHBase应用场应用场景景HBaseHBase功能与架构功能与架构HBaseHBase关键流程关键流程4.4. HBaseHBase常用命令和参常用
45、命令和参数数第41页常用接口客户端使用主要方式:客户端使用主要方式:HBase ShellHBase ShellHBaseHBase的命令行工具,最简单的接口,适合 HBaseHBase管理使用。Java API HBaseJava API HBase客户端程序通过底层RPCRPC接口与HBaseHBase集群进行通信,客户程序直接集成HBaseHBase的JavaJava包,通过调用相关APIAPI即可完成操作。其余接口:其余接口:REST REST 接口接口RESTREST(Representational State TransferRepresentational State Tran
46、sfer)表述性状态转移 接口。 ThriftThrift接接口口Thrift Thrift 是一个基于静态代码生成的跨语言的RPCRPC协议栈实现,它可以生成包括C+, Java, Python, Ruby, PHP C+, Java, Python, Ruby, PHP 等主流语言的代码,这些代码实现了 RPC RPC 的协议层和传输层功能,从 而让用户可以集中精力于服务的调用和实现。 AvroAvro接口接口AvroAvro是一个数据序列化系统,设计用于支持大批量数据交换 的应用。第42页HBase Shell 连接通过/hbase shell来连接正在运行的HBase Shell客户端
47、用法:用法:# .bin/hbase shellHBase Shell; enter help for list of supported Type exit to leave the HBase ShellVersion 0.94.0, r, Sun Aug 26 22:12:56 CST 2012commands.hbase(main):001:0第43页HBase Shell 创建表创建表时,可以选择多个参数,但表名和列族名是必须的参数,其它参数还包括版本数、TTL 以及预分Region建表的key数组等用法:用法:hbase create t1, NAME = f1, VERSIONS
48、 = 5hbase create t1, NAME = f1, NAME = f2, NAME = f3hbase # The above in shorthand would be the following: hbase create t1, f1, f2, f3hbase create t1, NAME = f1, VERSIONS = 1, TTL = 2592000, BLOCKCACHE = true hbase create t1, f1, SPLITS = 10, 20, 30, 40hbase create t1, f1, SPLITS_FILE = splits.txt h
49、base # Optionally pre-split the table into NUMREGIONS, usinghbase # SPLITALGO (HexStringSplit, UniformSplit or classname)hbase create t1, f1, NUMREGIONS = 15, SPLITALGO = HexStringSplit第44页HBase Shell 插入一行数据PutPut数据时,必选参数是表名、RowKey、列名(包括列族和列名)和值,可选参数包括时间戳用法:用法:hbase put t1, r1, c1, value, ts1例如,向表te
50、st中put三条数据,并通过count命令计算test表中的数据的条数 示例:示例:/向表test中put数据,RowKey为rowkey1,列族名为cf,列名为qualifier1,值为value1hbase(main):002:0 0 row(s) in 0.5940 hbase(main):003:0 0 row(s) in 0.0080/指定时间戳为3 hbase(main):011:0 0 row(s) in 0.0510 hbase(main):013:0 3 row(s) in 0.0160put test,rowkey1,cf:qualifier1,value1 seconds
51、put test,rowkey2,cf:qualifier2,value2 secondsput test,rowkey3,cf:qualifier3,value3,3 secondscount test seconds第45页HBase Shell 读取一行数据Get查询一行数据时,必选参数是表名和RowKey,可选参数包括列名(包括列族和列名)、时间戳、版本数等用法:用法:hbase hbase hbase hbase hbase hbaseget t1,get t1,get t1,get t1,get t1,get t1,r1 r1,r1,r1,r1,r1,TIMERANGE = ts1
52、, ts2= c1= c1, c2, c3=COLUMNCOLUMNCOLUMNCOLUMNc1,c1,TIMESTAMP TIMERANGE= ts1= ts1, ts2,VERSIONS = 4hbase get VERSIONS = 4t1, r1, COLUMN = c1,c1c1, c2c1, c2TIMESTAMP = ts1,hbase hbase hbaseget t1,get t1,get t1,r1,r1,r1,第46页HBase Shell 读取多行数据Scan查询多行数据,必选参数是表名,可选参数包括列名(包括列族和列名)、起止Key、Filter用法:用法:/查询元表
53、hbase hbase hbase hbase hbasescan scan scan scan scan.META.META., COLUMNS = info:regioninfot1,t1,t1,COLUMNS = c1, c2, LIMIT = 10, STARTROW = xyzCOLUMNS = c1, TIMERANGE = 1303668804, 1303668904FILTER = (PrefixFilter (row2) AND (QualifierFilter s(=,binary:xyz)AND (TimestampsFilter hbase scan t1,( 123, 456)FILTER =org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0) hbase scan t1, COLUMNS = c1, c2, CACHE_BLOCKS = false hbase scan t1, RAW = t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑安全员知识题库及答案
- 2025-2030年中国采血器市场发展状况及前景趋势分析报告
- 2025-2030年中国薯片市场运行态势与投资战略研究报告
- 2025-2030年中国营养碘盐市场发展状况及营销战略研究报告
- 2025-2030年中国自动光学检测仪(AOI)市场运营状况及前景趋势分析报告
- 2025-2030年中国绝热隔音材料产业运行状况与投资策略研究报告
- 2025-2030年中国电解金属锰行业前景展望规划研究报告
- 2025-2030年中国电站设备行业运行态势及发展趋势分析报告
- 延安职业技术学院《染整工艺原理(2)》2023-2024学年第二学期期末试卷
- 四川文化艺术学院《计算机组成》2023-2024学年第二学期期末试卷
- JGJ162-2014建筑施工模板安全技术规范-20211102195200
- 公司解散清算的法律意见书、债权处理法律意见书
- 2024-2025学年初中信息技术(信息科技)七年级下册苏科版(2023)教学设计合集
- 中华小厨神(教学设计)-五年级下册劳动人教版1
- 世界建筑史学习通超星期末考试答案章节答案2024年
- 公路桥梁工程施工安全风险评估指南
- 《齐桓晋文之事》+课件+2023-2024学年统编版必修下册+
- 《创伤失血性休克中国急诊专家共识(2023)》解读课件
- 八年级美术下册第1课文明之光省公开课一等奖新名师课获奖课件
- 2024年全国体育单招英语考卷和答案
- 食品安全管理制度可打印【7】
评论
0/150
提交评论