一、1、HBase简介
Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库;利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务;主要用来存储非结构化和半结构化的松散数据(列存 NoSQL 数据库)。
2、HBase数据模型
2.1 rowkey
决定一行数据
按照字典顺序排序
Row key只能存储64k的字节数据
2.2 column family - cf - 列族 及 qualifier - 列
HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出,如 create ‘test’, ‘cf1’;
列名以列族作为前缀,每个“列族”都可以有多个列成员/qualifier;如course:math, course:english, 新的列族成员/列成员可以随后按需、动态加入;
权限控制、存储以及调优都是在列族层面进行的;
HBase把同一列族里面的数据存储在同一目录下,由几个文件保存;
2.3 timestamp - 时间戳
在HBase每个cell存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面;时间戳的类型是 64位整型;时间戳可以由HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间;时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。
2.4 cell - 单元格
由行和列的坐标交叉决定;
单元格是有版本的;
单元格的内容是未解析的字节数组;
由{row key, column( = +), version} 唯一确定的单元。
ce