Hbase架构介绍

参考链接:https://www.jianshu.com/p/569106a3008f
HBase原理深入解析(一)----HBase架构总览
1 Hbase 简介

Hbase是Hadoop Database的简称 ,Hbase项目是由Powerset公司的Chad Walters和Jim Kelleman在2006年末发起,根据Google的Chang等人发表的论文“Bigtable:A Distributed Storage System for Strctured Data“来设计的。2007年10月发布了第一个版本。2010年5月,Hbase从Hadoop子项目升级成Apache顶级项目。
Hbase是分布式、面向列的开源数据库(其实准确的说是面向列族)。HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hbase提供高性能的计算能力,Zookeeper为Hbase提供稳定服务和Failover机制,因此我们说Hbase是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。

2 Hbase特点

  • 海量存储

  • 列式存储

  • 极易扩展

  • 高并发

  • 稀疏
    3 Hbase某些概念

  • Client
    Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的访问,比如cache的.META.元数据的信息

  • Zookeeper
    Hbase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下限的信息通过Zoopkeeper存储元数据的统一入口地址

  • Hmaster
    master节点的主要职责如下:
    为RegionServer分配Region
    维护整个集群的负载均衡
    维护集群的元数据信息
    发现失效的Region,并将失效的Region分配到正常的RegionServer上
    当RegionSever失效的时候,协调对应Hlog的拆分

  • HRregion
    每个HRegion由多个Store构成,每个Store保存一个列族(Columns Family),表有几个列族,则有几个Store,每个Store由一个MemStore和多个StoreFile组成,MemStore是Store在内存中的内容,写到文件后就是StoreFile。StoreFile底层是以HFile的格式保存。

  • HFile
    HBase的数据最终是以HFile的形式存储在HDFS中的,HBase中HFile有着自己的格式。

  • Hlog
    HLog(WAL log):WAL意为write ahead log(预写日志),用来做灾难恢复使用,HLog记录数据的变更,包括序列号和实际数据,所以一旦region server 宕机,就可以从log中回滚还没有持久化的数据

  • HRegionServer
    ①维护HMaster分配给它的HRegion,处理对这些HRegion的IO请求,也就是说客户端直接和HRegionServer打交道。(从图中也能看出来)
    ②负责切分正在运行过程中变得过大的HRegion
    HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
    管理master为其分配的Region
    处理来自客户端的读写请求
    负责和底层HDFS的交互,存储数据到HDFS
    负责Region变大以后的拆分
    负责Storefile的合并工作

  • HDFS
    HDFS为Hbase提供最终的底层数据存储服务,同时为Hbase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:
    提供元数据和表数据的底层分布式存储服务
    数据多副本,保证的高可靠和高可用性

4 Hbase架构
Hbase的架构如下图:
在这里插入图片描述
可以看出Hbase是由client,zookeeper,Master,HRregionServer,HDFS等几个部分组成。
包括了HMaster、HRegionSever、HRegion、HLog、Store、Zookper、client、MemStore、StoreFile、HFile等。接下来我先用自己的理解把这个结构描述一下,然后再分别介绍每个部分,建议再开一个屏幕对照着架构图看。HBase底层依赖HDFS,通过DFS Cilent进行HDFS操作。HMaster负责把HRegion分配给HRegionServer,每一个HRegionServer可以包含多个HRegion,多个HRegion共享HLog,HLog用来做灾难恢复。每一个HRegion由一个或多个Store组成,一个Store对应表的一个列族,每个Store中包含与其对应的MemStore以及一个或多个StoreFile(是实际数据存储文件HFile的轻量级封装),MemStore是在内存中的,保存了修改的数据,MemStore中的数据写到文件中就是StoreFile.

5 逻辑存储模型
Hbase 以表的形式存储数据,表由行和列组成。列划分为若干个族,如下图所示:
在这里插入图片描述
RowKey:Hbase使用Rowkey来唯一的区分某一行的数据。如图中"rk001"
列族:Hbase 通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据储存。HBase的列族不是越多越好,官方推荐的列族是小于或者等于3.
时间戳:TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
Cell:HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell。每个 cell 都保存着同一份 数据的多个版本。版本通过时间戳来索引
6 物理存储模型
7 Hbase 的region
Region类似于数据库的分片和分区的概念,每个Region负责一小部分Rowkey范围的数据的读写和维护,Region包含了对应的起始行到结束行的所有信息。master将对应的region分配给不同的RergionServer,由RegionSever来提供Region的读写服务和相关的管理工作。这部分主要介绍Region实例以及Rgeion的寻找路径:

  • region实例
    在这里插入图片描述
    上图模拟了一个Hbase的表是如何拆分成region,以及分配到不同的RegionServer中去。上面是1个Userinfo表,里面有7条记录,其中rowkey为0001到0002的记录被分配到了Region1上,Rowkey为0003到0004的记录被分配到了Region2上,而rowkey为0005、0006和0007的记录则被分配到了Region3上。region1和region2被master分配给了RegionServer1(RS1),Region3被master配分给了RegionServer2(RS2)
    备注:这里只是为了更容易的说明拆分的规则,其实真实的场景并不会几条记录拆分到不通的Region上,而是到一定的数据量才会拆分,具体的在Region的拆分那部分再具体的介绍。

添加
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值