一、HBase简介
(一)Hadoop
- 核心
HDFS分布式存储、MapReduce分布式计算、Yarn资源调度和管理 - 局限性
批量处理(MR)、顺序访问数据(HDFS)
查找数据是必须搜索整个数据集,效率很低
(二)HBase
- HBase是BigTable的开源java版本,建立在hdfs之上,分布式、列存储、支持实时读写、nosql(k-v)的数据库
- 结构:主键(rowKey)、timestamp(时间戳)、column family(列簇)和column(列)
- HBase仅能通过主键(rowkey)和主键的范围(range)检索数据
- 可以存储结构化和半结构化的数据
- HBase中所有的数据用字节数组byte[]来进行存储
- 可以横向扩展,可以不断的增加服务器来提高存储能力,从而实现海量存储
- 数据量很大,可以有十几亿行,几百万列
- 面向列存储
- 稀疏存储(稀疏矩阵:非零元素很少的矩阵,利用三元组(行,列,值)存储非零元素,0元素不存储)
(三)HBase的应用场景
- 对象存储(oss)
新闻、网页、图片、视频等,例如阿里云oss - 时序数据
每个数据都带有时间戳叫做时序数据,比如记录传感器的数据 - 推荐画像
用户画像的数据其实就是一个比较大的稀疏矩阵,比如蚂蚁金服的风控系统 - Olap
在线联机分析系统
注:oltp(在线事务分析系统,建立在关系数据库之上的,支持回滚) - Feeds流
典型的应用就是微信朋友圈类似的应用,发布新内容,对新内容进行点赞评论 - 爬虫数据的存储
(四)HBase的特点
-
强一致性读/写
CAP原则
-
自动分块
通过Region分布在集群上 -
自动故障转移
-
Hadoop/HDFS集成
-
MapReduce
-
Java API
(五)HBase的发展过程
(六)RDBMS和HBase的比较
- RDBMS
- RDBMS(关系数据库管理系统,mysql、sqlserver、Oracle)
- 数据库以表的形式独立存在
- 支持FAT(dos)、NTFS(windows)、NXT(linux)
- 主键(primary