一、产生背景
- 内因
- hadoop之mapreduce、hdfs、hive等适合做批量数据处理,且只能以顺序方式访问数据。
外因
hadoop database的简称
- habse是一个数据模型,属于hadoop生态圈的一部分.提供对海量数据的随机实时读、写。
- 构建在hdfs之上。分布式的面向列的数据库。
- 拥有hdfs分块存储、冗余、容错的优良特性。
- 完全开源,优良的拓展性。
2、hbase和hive的对比
| HDFS | HBase | | —- | —- | | 适于存储大文件的分布式文件系统 | 建立在HDFS之上的数据库,以数据记录为单位 | | 不支持快速单独记录查找,即顺序访问 | 提供在较大的表快速查找,即随机访问,也可以顺序访问 | | 批量任务处理,吞吐量高时延、实时性差 | 提供了亿级记录低延迟访问任意行记录,即随机存取
(原因:内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。) |
3、应用场景
- 重要概念
- 命名空间
- 相当于数据库database。
- 利用命名空间更好的做到资源隔离。
- 表
- 类比与表
- 以表为单位组织数据。表由多行组成。
- 行
- 行由一个Rowkey和多个列族组成。
- 每一行由一个rowkey作为唯一标识。
- 列族
- 每一行由若干列族组成,每个列族下有多个列。
- 列族是列的共性的体现。如baseinfo列族下有姓名列、年龄列等。
- 在物理上,同一列族的数据存储在一起。
- 列限定符
- 像上面的姓名和年龄就是列限定符。
- 单元格
- 每个单元格由列族、列限定符、rowkey唯一指定。单元格中存放一个指和一个版本号。
- 时间戳
- 即版本号,来标记一个单元格的的最新插入数据与修改时间。
- 单元格内的值按时间倒叙排列。最新的在最上面。
- 命名空间
- 核心设计
- 面向列定义、面向列存储的数据库,数据库也成为namespace。
- 表的基本促成单位是行。每行有一个唯一的标识符rowkey。
- 每个表有多个列族,每个列族有多个列。
- 每个单元格都有时间戳。
- 简易逻辑说明
- 表是行的集合
- 行是列族的集合
- 列族是列的集合
- 列是键值对的集合
数据表模板
6、版本变化