数据存储-Hbase基础

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_table

Hbase的特点

优点
  • 分布式数据库,海量存储,易于拓展
  • 数据的实时访问,随机读写
  • 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写操作
image

HBase写数据流程
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基本架构及原理

你可能感兴趣的:(数据存储-Hbase基础)