Outline
- 什么是Hbase
- 为什么需要Hbase
- Hbase的基础概念
- Hbase的架构
- Hbase的读写操作
什么是Hbase
HBase(Hadoop Database)是一种构建在HDFS之上的分布式、面向列(列族)的存储系统;源自Google发表于的Bigtable论文。HBase是Google Bigtable的克隆版,与Google Bigtable 利用GFS作为其文件存储系统类
- HDFS为Hbase提供可靠的底层数据存储服务
- MapReduce为Hbase提供高性能的计算能力
- Zookeeper为Hbase提供稳定服务和Failover机制
Hbase是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。
BigTable发明的原因
搜索是一种定位你所关心信息的行为
hbase_search
为什么需要Hbase?
hdfs和hbase各自使用场景
Hbase是Hadoop平台下的数据存储引擎,是一个非关系型数据库--NoSQL数据库
image
HDFS不支持随机读写操作
Hbase和关系型数据库的比较
hbase_vs_RDBMS hbase_tableHbase的特点
优点
- 分布式数据库,海量存储,易于拓展
- 数据的实时访问,随机读写
- schemaless data model (“NoSQL”)
- 自我管理数据分片
- 强一致模型(当写操作返回时,所有的读将看到一样的结果)
缺点
不支持SQL,不支持跨行跨表事务,不支持二级索引,而且读时延大。它不能用在OLTP(On-Line Transaction Processing联机事务处理过程)业务,比如支付业务的核心流程,但适合存放历史数据,处理历史数据的对账、历史数据的回溯等需求。
Hbase表的基础概念
hbase_concept概念名称 | 解释 |
---|---|
Table(表) | 类似于传统数据库中的表 |
Column Family(列簇) | Table在水平方向有一个或者多个Column |
Row Key(行健) | Table的主键;Table中的记录按照Row Key排序 |
Region | 一定范围的数据访问和存储;HBase数据管理的基本单位 |
Timestamp(时间戳) | 每一行数据均对应一个时间戳;也可以当做版本号。 |
Hbase的架构和基本概念
Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等几个组建组成,架构图如下:
hbase_arch
基本概念
概念 | 功能 |
---|---|
Client | 包含了访问Hbase的接口,并维护cache |
Zookeeper | Hmaster的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等 |
Hmaster | Hmaster的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等 |
Hlog | 每个HRegionServer中都会有一个HLog的实例,存储在HDFS上 |
HregionServer | HregionServer直接对接用户的读写请求,是真正的“干活”的节点,每个RegionServer为一定数量的region服务 |
Hregion | Hbase中分布式存储和负载均衡的最小单元,会split,包含多个Store |
Store | Store = MemStore+StoreFile(>=1个) |
MemStore | 内存,对应一个列族,KV |
StoreFile | StoreFile包含一个或多个HFile,以二进制流的形式存储在HDFS上 |
HFile | 由block组成 |
HDFS | 为Hbase提供最终的底层数据存储服务,同时为Hbase提供高可用的支持 |
HFile由很多个数据块(Block)组成,并且有一个固定的结尾块。其中的数据块是由一个Header和多个Key-Value的键值对组成。在结尾的数据块中包含了数据相关的索引信息,系统也是通过结尾的索引信息找到HFile中的数据。
Hbase的存储机制
Hbase的读写操作
Hbase写操作
imageHBase写数据流程
1,Client先访问zookeeper,从meta表获取相应region信息,然后找到meta表的数据
2,根据namespace、表名和rowkey根据meta表的数据找到写入数据对应的Hregion信息
3,找到对应的regionserver
4,把数据分别写到HLog和MemStore上一份
4,MemStore达到一个阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以总HLog上恢复)
5,当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合并为一个StoreFile,(这里同时进行版本的合并和数据删除。)
6,当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split),并由Hmaster分配到相应的HRegionServer,实现负载均衡
Hlog
Hlog是Hbase实现WAL(Write ahead log,预写日志)方式产生的日志信息
当RegionServer出现故障的时候,需要对Hlog进行回放来恢复数据。
保证数据的高可用!!
Hbase读操作
1,Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息。
2,根据namespace、表名和rowkey在meta表中找到对应的region信息
3,找到这个region对应的regionserver
4,查找对应的region
5,先从MemStore找数据,如果没有,再到StoreFile上读(为了读取的效率)。
谁在使用Hbase
hbase_who_use参考资料
Hbase技术详细学习笔记
《HBase实战》
Hadoop相关知识整理系列之一:HBase基本架构及原理
网友评论