HBase架构和读写流程

HBase的角色

一.HMaster

功能:

1.监控ReginServer

2.处理ReginServer故障转移

3.处理元数据的变更

4.处理region的分配或移除

5.在空闲时间进行数据的复杂均衡

6.通过zookeeper发布自己的位置给客户端

 

二.RegionServer

功能:

1.负责存储HBase的实际数据

2.处理分配给他的Region

3.刷新缓存到HDFS

4.维护HLog

5.执行压缩

6.负责处理Region分片

组件:

Write-Ahead logs

HBase的修改记录,当对HBas读写数据的时候,数据不是直接写进磁盘,他会在内存中保留一段时间(时间及数量阈值可以设定)。但把数据保存在内存中有更高的概率导致数据丢失,为了解决这个问题,数据会现在一个叫做Write-Ahead-logfile的文件中,然后在写入内存,所以在系统出现故障的时候,数据可以通过这个日志文件重建。

HFile

这是在磁盘中保存原始数据的实际的物理文件,是实际的存储文件。

Store

HFile存储在Store中,一个Store对应HBase表中的一个列族

Memstore

顾名思义就是内存存储,位于内存中,用来保存当前数据的操作,所以当数据保存在WAL中之后,RegionServer会在内存中存储键值对。

Region

HBase表的分片,HBase表会根绝Rowkey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。

 

 

HBase的架构

HBase是一种作为存储的分布式文件系统,另一种是作为数据处理模型的MR框架,因为日常开发人员比较熟练的结构化数据进行处理,但是在HDFS直接存储的文件往往不具有结构化,所以催生出了HBse在HDFS上的操作。如果需要查询的数据,只需要通过键值便可以成功访问。架构图如下所示

 HBase内置有zookeeper,但一般我们会有其他的zookeeper集群来监管master和regionserver,zookeeper通过选举,包中任何时候,集群中只有一个活跃的HMaster,HMaster与HRegionServer启动时对象zk注册,存储所有HRegion的寻址入口,实时监控HRegionServer的上线和下线信息,并实时通知给HMaster,存储HBase的schma和table元数据,默认情况下HBase管理zookeeper实例,zookeeper的引入是的HMaster不再是单点故障,一般in工况下会启动两个HMaster,非Active的HMaster会定期和ActiveHmaster通信以获取最新状态,从而保证他是实时更新的,因而如果启动了多个HMaster反而增加了ActiveHMaster的负担。

一个RegionServer可以包含多个HRegion,每个RegionServer维护一个HLog,和多个HFiles以及对应的Memstore。RegionServer运行在DateNode上,数量可以与DateNode一致,架构图如下

http://upload-images.jianshu.io/upload_images/4951489-8dee031e87bde745.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

 

HBase读写流程

一 Hbase读数据流程

1.HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里获取meta表所在的位置信息,即找到这个meta表在哪个HRegionServer上保存着。

2.接着client通过刚才获取到的HRegionServer的IP来访问Meta表所在的HRegionServer,从而读到Meta,进而获取到Meta表中存放的元数据。

3.Client通过原数据中存储的信息,访问对应的HRegionServer,然后扫描所在HRegionServer的Memstore和Storefile来查询数据。

4.最后HRegionServer把查询到的数据响应给Client。

二 HBase写数据流程

1.Clent先访问zookeeper,先找到Meta表,并获取Meta表信息。

2.确定当前将要写入的数据所对应的的HRegionServer服务器和Region

3.Client向该RegionServer服务器发起写入数据请求,然后RegionServer收到请求并响应。

4.Client先把数据写入到HLog,以防数据丢失。

5.然后把数据写进Memstore。

6.如果HLog和Memstore均写入成功,则这条数据写入成功,在此过程中如果Memstore达到阈值,会把Memstore中的数据flush到StoreFile中。

7.当StoreFile越来越多,会触发Compact合并操作,把过多的Storefile合并成一个大的Storefile。当Storefile越来越大,Region也会越来越大,达到阈值之后会触发Split操作,将Region一分为二

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值