Hbase学习(一):Hbase简介和数据模型
1. HBase简介
(1)Hbase 概念:
Google的BigTable的开源实现,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
(2)Hbase的运行基础:
利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理
HBase中的海量数据,利用Zookeeper作为其分布式协同服务
(3)Hbase支持从数据模型:
主要用来存储非结构化和半结构化的松散数据( NoSQL 数据库),不支持完整的关系数据模型
2. HBase数据模型(逻辑模型)
(1)逻辑模型概图:
(2)逻辑模型中的核心概念解释
核心概念简介:
1)行键(Row Key),用来检索逻辑视图中一行的主键。
存储时,按Row Key的字典序排序;
行的一次读写是原子操作。
2)列族(Column Families),表每行的列被分组,每个组就称为一个列族。
列族需要先定义,列族中的列可以动态创建;
访问控制、磁盘和内存的使用统计都是以列族为单位的。
3)时间戳(Time Stamp),每次数据操作都会有对应的时间戳,数据的不同版本就是通过时间戳来索引的。
不同版本的数据按照时间戳倒序排序。
核心概念的注意事项:
第一:行键(Row Key) :
1)row key是用来检索记录的主键,访问hbase table中的行,只有三种方式
1 通过单个row key访问
2 通过row key的range
3 全表扫描
2)Row key按照字典顺序排序的
3)Row key行键 (Row key)可以是任意字符串(最大长度是64kb)
4)存储时,按Row Key的字典序排序;
5)行的一次读写是原子操作。
第二:列族(Column Families):
1)表每行的列被分组,每个组就称为一个列族
2)列名都以列族作为前缀。例如person:name, person:age都属于person这个列族
3) 列族需要先定义,列族中的列可以动态创建
4) 访问控制、磁盘和内存的使用统计都是以列族为单位的
第三:时间戳(Time Stamp):
1) 每次数据操作都会有对应的时间戳,数据的不同版本就是通过时间戳来索引的。
2)不同版本的数据按照时间戳倒序排序。
第四:Cell
1) HBase中通过row和columns确定的为一个存贮单元称为cell
2)单元格是有版本的;
3)单元格的内容是未解析的字节数组;
由 {row key, column( =<family> +<qualifier>), version} 唯一确定的单元。
3. HBase数据模型(物理模型)
(1)HBase在文件系统中命名空间的结构如下:
/hbase/<tablename>/<encoded-regionname>/<column-family>/<filename>
(2)在每个HRegion文件夹下会有一个.regioninfo文件,用来存储这个HRegion的元数据信息。
这些元数据信息可以帮助恢复被破坏的.META.表。
(3)HBase具体数据文件格式,HBase使用的是HFile作为存储文件格式;