一、什么是Hbase
二、Hbase分布式集群搭建
Mysql和Hbase的区别:
三、HBase 表存储结构
HBase 表逻辑视图
表的形式存储数据,表由行和列组成。列划分为若干个列簇 (Column Family)。
2、HBase 表结构组成
行键(RowKey)
作用:用来检索记录的主键
访问 HBase 表中的行,有三种方式:
- 通过单个 RowKey 访问
- 通过 RowKey 的 range(正则)
- 全表扫描
可以是任意字符串。在 HBase 内部, RowKey 保存为字节数组(byte[])。
存储时,表中数据按照 RowKey 排序(字典顺序)
设计key时,利用排序存储这个特性,将经常一起读取的行放到一起。
列簇(Column Family)
列簇包含列,列簇是表的 schema 的一部分(而列不是),必须在使用表之前定义
列名都以列簇作为前缀。例如:courses:history,courses:math 都属于 courses 这个列簇
尽量不要设置过多列簇
因为列簇越多,在取一行数据时所要参与 IO、搜寻的文件就越多
时间戳(TimeStamp)
可以通过 row 和 columns 确定一个存储单元(Cell)
每个 Cell 都保存着同一份数据的多个版本。
版本通过时间戳来索引
类型:64 位整型
HBase(在数据写入时自动)赋值
此时间戳是精确到毫秒的当前系统时间
客户显式赋值
顺序:每个 Cell中,不同版本的数据按照时间戳降序排序,即最新的数据排在最前面。
数据版本回收方式
- 保存数据的最后 n 个版本
- 保存最近一段时间内的版本(设置数据的生命周期 TTL)
可以针对每个列簇进行设置
单元(Cell)
由{
RowKey, column( =<family> + <label>),version} 确定唯一单元
Cell 中的数据是没有类型的,全部是字节码形式存储。
版本(Version)
有很多单元(Cell)的行和列是相同的,使用版本来区分不同的单元
类型:用一个长整型表示
顺序:按照时间戳降序排列
因此当读取这个文件的时候,最先找到的是最近的版本
HBase 表的特点
(1)大
(2)面向列: 面向列(簇)的存储和权限控制,列(簇)独立检索。
(3)稀疏:对于为空(null)的列,并不占用存储空间。
(4)无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
(5)数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
(6)数据类型单一:HBase 中的数据都是字符串,没有类型。
四、Hbase命令行操作
1、进入 HBase 命令行界面
基本操作
[xutao@Hadoop1 conf]$ hbase shell
- 任意一台安装HBase的服务器节点
查看帮助信息
获取所有命令的帮助信息
hbase(main):001:0> help
获取一组命令的帮助信息
hbase(main):001:0> help "ddl"
获取单独命令的帮助信息
hbase(main):001:0> help