欢迎投稿

今日深度:

HBase系列(二):HBase架构及读写流程,hbase架构

HBase系列(二):HBase架构及读写流程,hbase架构


本篇博文从分析HBase架构开始,首先从架构中各个组成部分开始,接着从HBase写入过程角度入手,分析HFile的Compaction合并、Region的Split分裂过程及触发机制。

架构分析

1、HMaster

  • 负责管理HBase元数据,即表的结构、表存储的Region等元信息。
  • 负责表的创建,删除和修改(因为这些操作会导致HBase元数据的变动)。
  • 负责为HRegionServer分配Region,分配好后也会将元数据写入相应位置(后面会详细讲述放在哪)。

如果对可用性要求较高,它需要做HA高可用(通过Zookeeper)。但是HMaster不会去处理Client端的数据读写请求,因为这样会加大其负载压力,具体的读写请求它会交给HRegionServer来做。

2、HRegionServer

  • 一个RegionServer里有多个Region
  • 处理Client端的读写请求(根据从HMaster返回的元数据找到对应的Region来读写数据)。
  • 管理Region的Split分裂、StoreFile的Compaction合并。

一个RegionServer管理着多个Region,在HBase运行期间,可以动态添加、删除HRegionServer。

3、HRegion

  • 一个HRegion里可能有1个或多个Store
  • HRegionServer维护一个HLog。
  • HRegion是分布式存储和负载的最小单元。
  • 表通常被保存在多个HRegionServer的多个Region中。

因为HBase用于存储海量数据,故一张表中数据量非常之大,单机一般存不下这么大的数据,故HBase会将一张表按照行水平将大表划分为多个Region,每个Region保存表的一段连续数据。 初始只有1个Region,当一个Region增大到某个阈值后,便分割为两个。

4、Store

  • Store是存储落盘的最小单元,由内存中的MemStore和磁盘中的若干StoreFile组成。
  • 一个Store里有1个或多个StoreFile一个memStore
  • 每个Store存储一个列族。

HBase 读写过程

写过程

具体合并与分裂过程我们接下来讲解。

Region三层定位

读过程

StoreFile合并(Compaction)

目的:减少StoreFile数量,提升数据读取效率。

Compaction分为两种:

  • major compaction
    将Store下面**所有**StoreFile合并为一个StoreFile,此操作会删除其他版本的数据(不同时间戳的)

  • minor compaction
    选取Store下的**部分**StoreFile,将它们合并为一个StoreFile,此操作不会删除其他版本数据。

Region分割(Split)

目的:实现数据访问的负载均衡。

做法:利用Middle Key将当前Region划分为两个等分的子Region。需要指出的是:Split会产生大量的I/O操作,Split开始前和Split完成后,HRegionServer都会通知HMaster。Split完成后,由于Region映射关系已变更,故HRegionServer会更新meta表。

以上,即是HBase详细架构,以及在此架构上的读写操作的过程和可能发生的事件。后续博文会对HBase二级索引及BulkLoad相关内容进行进一步研究。

www.htsjk.Com true http://www.htsjk.com/hbase/29314.html NewsArticle HBase系列(二):HBase架构及读写流程,hbase架构 本篇博文从分析HBase架构开始,首先从架构中各个组成部分开始,接着从HBase写入过程角度入手,分析HFile的Compaction合并、Region的Split分裂过...
相关文章
    暂无相关文章
评论暂时关闭