HBase简介
一、HBase简介
1. HBase简介
(1) apache的顶级项目,hadoop的数据库,分布式、大规模的大数据存储。
HBase是Google的BigTable的开源java版本,建立在hdfs之上的,分布式、列存储、非关系(nosql、key-value)、支持实时读写的数据库
HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。
Hbase面向列存储,构建于Hadoop之上,类似于Google的BigTable,提供对10亿级别表数据的快速随机实时读写!
(2) HBase****的结构
主键(rowkey)
列簇(column family )
列(column)
时间戳(timestamp)
二、HBase的特点
l HBase仅能通过主键来查询数据
l 可存储结构化和半结构化的数据
l 所有的数据使用字节数据byte[]来存储
l 可以横向扩展,也就是说可以通过不断的增加服务器来提高存储能力实现真正的海量存储
l 一张表可以存储几百万列,几十亿行数据
l 面向列存储,k-v(散列hash y=hash(x))
l 稀疏矩阵:非零元素很少,分布没有任何的规律,三元组(行号、列号、非零元素的值)存储
l 强一致性
l 自动分区
通过region分布在集群上
l 自动故障转移
l hadoop/hdfs集成:HBase是建立在hdfs之上
l MapReduce:对mr进行了改进,数据处理的效率可以达MR的到1000倍以上
l JAVA API:通过javaapi对hbase进行编程
l 命令行:Hbase的shell命令
2. hdfs
顺序访问,存储效率很低
三、HBase的应用场景
1. 对象存储(OSS)
图片、视频、新闻、网页都可以存储在hbase中
2. 时序数据
每个数据都带有时间戳,比如传感器的数据
3. 推荐画像
用户画像的数据其实就是一个大的稀疏矩阵,比如蚂蚁金服
4. OLAP
实时的在线联机分析系统,比如天猫的双十一或者京东618的可视化大屏
注意:OLTP(在线事务分析系统)的区别,建立在关系数据库之上,支持事务回滚
5. Feeds流
典型的应用就是微信的聊天记录、朋友圈、点赞、评论
6. 爬虫数据的存储
四、HBase的发展过程
年代 | 事件 |
---|---|
2006年11月 | Google发布了BigTable的论文 |
2007年10月 | 第一个可用的HBase版本,基于Hadoop |
2008年1月 | 成为apache的顶级项目 |
五、HBase和RDBMS的比较
1. RDBMS(关系数据库管理系统:mysql、sqlserver、oracle)
l 数据库以表的形式独立存在
l 支持FAT(dos)、NTFS(windows)、EXT(linux)等文件系统
l 主键(primary key)
l 分库分表
l 表由行、列、单元格
l 支持向上扩展
l 使用sql(增删改查)
l 面向行存储
l ACID的特性
l 结构化的数据(二维表格)
l 支持事务(transaction)
l 支持join(连接,全连接(full join笛卡尔乘积),自然连接(inner join),左连接(left join),右连接(right join))
l 中心化
2. HBse
l 以表的形式存在
l 使用行键(row key)
l 分布式存储
l 行键、列簇、列、时间戳
l 支持向外扩展
l 使用命令行、java api和Mapreduce、Spark、Flink来访问HBase表数据
l 面向列存储
l 不支持acid,但是遵循cap原则
l 结构化和半结构化的数据
l 不支持事务
l 不支持join
l 分布式
六、HBase和HDFS的比较
1. HDFS
分布式,不是一个文件系统,无法快速的查询数据
2. HBase
建立在HDFS上,为大型表提供快速查询数据
七、HBase和Hive的比较
1. Hive
l 数据仓库,它的本质就是相当于将hdfs的文件和mysql中做了一个一一对应的映射,可以通过HQL(类sql,是hive的sql,把每一条hql都转换为一个mr程序)进行数据的管理。
l hive主要用于数据分析、清洗等,适用于离线数据,延迟很高
l hive基于HDFS和MapReduce,将数据存储在hdfs的datanode上,hql转换为一个mr程序执行
2. HBase
l NoSql:面向列的非关系型数据库
l 用于存储结构化和非结构化的数据
l 基于hdfs:HBase的存储文件HFile存储在hdfs的datanode上,被regionserver以region(分区)的形式进行管理
l 延迟较低,适合olap(实时的联机分析系统,比如天猫双十一的实时成交数据可视化大屏)
八、NoSQL数据库
l SQL数据库
按行存储,主要操作增删改查,常见的数据库有mysql、sqlserver、oracle
l NoSQL
非关系数据库,或者叫不仅仅是关系数据库,key/value格式的数据库,常见的有redis(高速缓存比如秒杀抢购系统)、memcache、mongodb(文档)、hbase
l hive
并不是一个数据库,仅仅是一个数据仓库的工具
oSQL数据库**
l SQL数据库
按行存储,主要操作增删改查,常见的数据库有mysql、sqlserver、oracle
l NoSQL
非关系数据库,或者叫不仅仅是关系数据库,key/value格式的数据库,常见的有redis(高速缓存比如秒杀抢购系统)、memcache、mongodb(文档)、hbase
l hive
并不是一个数据库,仅仅是一个数据仓库的工具