HBase 学习笔记

2018-10-16  本文已影响0人  华阳_3bcf

开篇

传统数据库结构是这样的:

RDBMS-Table.png

但在NoSQL领域,数据表的模样是这样的:

NoSQLTable.png

HBase,就属于该派系的一个典型代表。这些”杂乱无章”的列所构成的多行数据,被称之为一个”稀疏矩阵”,而上图中的每一个”黑块块”,在HBase中称之为一个KeyValue。

Apache HBase是基于Hadoop构建的一个分布式的、可伸缩海量数据存储系统

(数据量<10GB,适合Mongodb;数据量>10TB,适合HBase)

数据模型

RowKey

用来表示唯一一行记录的主键,HBase的数据是按照RowKey的字典顺序进行全局排序的,所有的查询都只能依赖于这一个排序维度。

稀疏矩阵

HBase中一个表的数据是按照稀疏矩阵的方式组织的:

RowKey Columns
Row1 {id, name, phone}
Row2 {id, name, address, title, email}
Row3 {id, address, email}

看的出来:每一行中,列的组成都是灵活的,行与行之间并不需要遵循相同的列定义

Region

HBase中采用了”Range分区”,将Key的完整区间切割成一个个的”Key Range” ,每一个”Key Range”称之为一个Region。

也可以这么理解:将HBase中拥有数亿行的一个大表,横向切割成一个个”子表“,这一个个”子表“就是Region

Regions.png

Region是HBase中负载均衡的基本单元,当一个Region增长到一定大小以后,会自动分裂成两个。

Column Family

如果将Region看成是一个表的横向切割,那么,一个Region中的数据列的纵向切割,称之为一个Column Family。每一个列,都必须归属于一个Column Family,这个归属关系是在写数据时指定的,而不是建表时预先定义。

RegionAndColumnFamilies.png

KeyValue

每一行中的每一列数据,都被包装成独立的拥有特定结构的KeyValue,KeyValue中包含了丰富的自我描述信息:

Key ColumnFamily Qualifier Timestamp Type Value Tags

HBase shell 练习

在hadoop环境
启动命令

$ hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.1.2.2.6.4.0-91, r2a88e694af7238290a5747f963a4fa0079c55bf9, Thu Jan  4 10:42:39 UTC 2018
hbase(main):001:0>

创建表

create {table_name}, {column_family_name}

hbase(main):002:0> create 'test', 'cf'
0 row(s) in 1.5670 seconds

=> Hbase::Table - test
hbase(main):003:0>

列出表信息

hbase(main):003:0> list 'test'
TABLE
test
1 row(s) in 0.0190 seconds

=> ["test"]

向表中插入数据

hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1150 seconds

hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0100 seconds
hbase(main):007:0> put 'test', 'row3', 'cf:c', 'value3,roy3'
0 row(s) in 0.0080 seconds

扫描表中所有数据

hbase(main):008:0> scan 'test'
ROW                   COLUMN+CELL
 row1                 column=cf:a, timestamp=1539671480227, value=value1
 row2                 column=cf:b, timestamp=1539671504820, value=value2
 row3                 column=cf:c, timestamp=1539671656111, value=value3,roy3
3 row(s) in 0.0240 seconds

获取一行数据

hbase(main):009:0> get 'test', 'row1'
COLUMN                CELL
 cf:a                 timestamp=1539671480227, value=value1
1 row(s) in 0.0180 seconds

禁用/启用表格

hbase(main):028:0> disable 'test'
0 row(s) in 2.2640 seconds

hbase(main):029:0> enable 'test'
0 row(s) in 1.2330 seconds

退出

hbase(main):030:0> quit
上一篇下一篇

猜你喜欢

热点阅读