一.概述
1.产生原因
hadoop的mr/hdfs/hive等只能做数据的顺序访问,不能随机访问
很多场景需要数据的随机访问,例如身份证的识别,手机号的识别,健康码等
2.简述
- 全称 : hadoop habase
- 它是一个以hdfs为基础,面向列的分布式数据库,可以提供海量数据的随机实时读写
- 完全开源,参考了谷歌的bigtable数据库设计
3.应用场景
- 高并发,简单条件,随机查询
- 不擅长join类操作
- 半结构化,非结构化的数据存储
- 数据采集结果存储,海量数据查询等项目开发中经常使用
二.Hbase与hdfs的对比
- 相同点
- 都是面向大数据的存储系统
- hbase建立在hdfs之上
- 不同点
- hdfs顺序访问数据,hbase可以顺序访问,也可以随机访问
- hdfs吞吐量高,实时性差,hbase提供了亿级记录的低延时访问
三.重要概念
- 命名空间(namespace)
- 与关系型数据库的database类似
- 表(table)
- 类似关系型数据库中的表
- 行(row)
- 行由一个RowKey和多个列族组成,一个行有一个RowKey作为行的唯一标识。
- 列族(column family,CF)
- 多个列的集合,每行由多个列族组成
- 物理上,同一个列族的数据存储在一起
- 列限定符(column qualifier)
- 类似关系型数据库的列,由列名称和列族名称唯一限定
- 单元格(cell)
- 单元格由RowKey、列族、列限定符唯一定位,单元格之中存放一个值(Value)和一个版本号。
- 时间戳(timestamp)
- 即为版本号,来标识一个单元格的数据的最新的插入或是修改时间
- 单元格内不同版本的值按时间倒序排列,最新的数据排在最前面
四.核心设计
- 表是行的集合
- 行是列族的集合
- 列族是列的集合
- 列是键值对的集合
hbase表的样例
![](https://i-blog.csdnimg.cn/blog_migrate/87897f5dd3a46be9491eadb3b357a535.png)
五.版本
- 2007年 第一个可用的Hbase发布了
- 2010年5月 成为Apache顶级项目
- 2014年2月 0.98发布 该版本成为很多国内公司使用的最早版本
- 2015年10月 Hbase1.0发布
- 2017年5月 Hbase1.2.发布,这个作为了Hbase的稳定版本
版本变化说明:
- hbase2.x相比于1.x主要是在架构设计优化、部分极端场景下的性能优化、可靠性、安全性得到进一步提升,修复众多Bug。
- 并没有发生底层本质性变化。
- 当前使用的是2.0.2版本