部署与使用
Introduction
- 2006.11 G release paper on BigTable
- 2007.2 inital HBase prototype created as Hadoop contrib
- 2007.10 First useable Hbase
- 2008.1 Hadoop become Apache top-level project and Hbase becomes subproject
- 2008.10 Hbase 0.18,0.19 released
- 大:一个表可以有上亿行,上百万列
- 面向列
: 面向列( 族) 的存储和权限控制,列( 族) 独立检索。 - 稀疏
: 对于为空(null) 的列,并不占用存储空间,因此,表可以设计的非常稀疏。
Logical View: 逻辑视图
- 行键:每行都有唯一的行键,行键没有数据类型,它内部被认为是一个字节数组。
- 列簇:数据在行中被组织成列簇,每行有相同的列簇,但是在行之间,相同的列簇不需要有相同的列修饰符。在引擎中,
HBase 将列簇存储在它自己的数据文件中,所以,它们需要事先被定义,此外,改变列簇并不容易。 - 列修饰符:列簇定义真实的列,被称之为列修饰符,你可以认为列修饰符就是列本身。
- 版本:每列都可以有一个可配置的版本数量,你可以通过列修饰符的制定版本获取数据。

- 通过他们的行键,或者一系列行键的表扫描。
- 使用
map-reduce 进行批操作

Row Key
列簇
时间戳
Cell
由
Quick Start
Installation: 安装
让我们开始用命令行操作
./hbase shell
你应该看到如下类似的输出:
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.5-hadoop2, rUnknown, Mon Aug 4 23:58:06 PDT 2014
hbase(main):001:0>
表创建
创建一个名为
hbase(main):002:0> create 'PageViews', 'info'
0 row(s) in 5.3160 seconds
=> Hbase::Table - PageViews
每张表至少要有一个列簇,因此我们创建了
hbase(main):002:0> list
TABLE
PageViews
1 row(s) in 0.0350 seconds
=> ["PageViews"]
如你所见,
hbase(main):003:0> describe 'PageViews'
DESCRIPTION ENABLED
'PageViews', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW',
REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE true
', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false',
BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 0.0480 seconds
数据插入
现在为表添加以下数据,下面命令是在
hbase(main):004:0> put ";PageViews", ";rowkey1", ";info:page", ";/mypage"
0 row(s) in 0.0850 seconds
hbase(main):005:0> get 'PageViews', 'rowkey1'
COLUMN CELL
info:page timestamp=1410374788088, value=/mypage
1 row(s) in 0.0250 seconds
数据查询
让我们查询出
hbase(main):007:0> scan 'PageViews'
ROW COLUMN+CELL
rowkey1 column=info:page, timestamp=1410374788088, value=/mypage
rowkey2 column=info:page, timestamp=1410374823590, value=/myotherpage
2 row(s) in 0.0350 seconds
如前面所提到的,我们不能查询本身,但是我们可以对表进行
hbase(main):012:0> put 'PageViews', 'srowkey2', 'info:page', '/myotherpage'
现在,如果我增加点限制,想查询行键在
hbase(main):014:0> scan 'PageViews', { STARTROW => 'r', ENDROW => 's' }
ROW COLUMN+CELL
rowkey1 column=info:page, timestamp=1410374788088, value=/mypage
rowkey2 column=info:page, timestamp=1410374823590, value=/myotherpage
2 row(s) in 0.0080 seconds
这个
hbase(main):013:0> scan 'PageViews', { STARTROW => 'r' }
ROW COLUMN+CELL
rowkey1 column=info:page, timestamp=1410374788088, value=/mypage
rowkey2 column=info:page, timestamp=1410374823590, value=/myotherpage
srowkey2 column=info:page, timestamp=1410375975965, value=/myotherpage
3 row(s) in 0.0120 seconds