版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012575451/article/details/53219844
1、HBase是一个针对结构化的可伸缩、高可靠的、面向列的开源数据库,HBase不同于传统的关系型数据库,采用了BigT的able数据模型,是一个适合于非结构化数据存储的数据库。HBase是Apache的Hadoop项目的子项目。HBase的数据模型:增强的稀疏排序表(Key/Value),键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问。HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美的结合在一起。
数据模型:Schema-->Table-->Column Family-->Rowkey-->TimeStamp-->Value
2、HBase表的特点
HBase表很大:一个表可以有数十亿行,上百万列;
HBase表无模式:每行都有一个可排序的主键好任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有不同的列;
面向列:列独立检索;
稀疏:空列并不占用存储空间,表可以设计的非常稀疏;
数据类型单一:HBase中的数据都是字符串,没有类型
Hbase基本概念
RowKey:是Byte array,是表中每条记录的“主键”;
Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(cell):Byte array
物理存储:
1、Table中所有行都按照row key的字典排序;
2、Table在行的方向上分割多个Region;
HBase与HDFS对比
两者都具有较好的容错性和扩展性,都可以扩展到成百上千个点;
HDFS适合批处理场景
不适合增量数据处理
不支持数据更新
HBase的三维有序存储是指:rowkey(行主键),column key,timetamp(时间戳)三部分组成的三维有序存储。
rowkey:rowkey是行的主键,HBase只能用一个rowkey。rowkey的设计时至关重要的,关系到应用层的查询效率。rowkey是以字典顺序排序的。而存储的字节码,字典排序,若是字母,就是字母的顺序,比如,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么rowkey1是rowkey2前面的。
column key :column key 是第二维,数据按rowkey字典排序后,如果rowkey相同,则根据 column key来排序,也是按字典排序。
timestamp:timestamp是时间戳,是第三维,是按降序排序的,即最新的数据排在最前面。