大数据Hdoop核心工具,HBase的架构设计

在之前的文章中,小鸟给大家简单的介绍过一些分布式存储系统——HBase的相关知识。想必大家已经对HBase有一些初步的了解,如果没有看过的同学欢迎翻看之前的文章。

废话不多说,接下来小鸟来跟大家聊一聊今天的主题,HBase的架构。

首先,HBase的总体架构图如下图所示:

从Hbase的架构图可以看出,整个Hbase是基于Hadoop的,并且其结构也和Hadoop Yarn类似,一个主控机(Hmaster)控制多个从属机(HRegionServer)。

HBase中的每张表都会通过rowkey,按照一定范围呗分割成多个字表,也就是HRegion。HRegion默认大小为256MB,如果超过256MB就会被分割成两块。HRegion是由HRegionServer所管理的。HRegion中还包含下列组件:Store、MemStore、StoreFile、HFile、HLog等,接下小鸟来会详细介绍每个组件的作用,以及整个服务的流程。

HMaster

HMaser最主要的作用就是为HRegionServer分配HRegion,以及数据表的DDL操作(表的创建和删除等)。同时,HMaster还需要负责RegionServer的负载均衡,在其失效或者失衡的时候,将其上的Region重新分配,以保障服务的稳定运行。并且HBase在HDFS上产生的垃圾文件也是HMaster负责回收的。总而言之HMaster就是一个大局上的指挥官。

HRegionServer

HRegionServer主要作用是维护HMaster为其分配的Region,处理HMaster对这些Region的读写请求。前面说到Region超过256MB的时候会按照rowkey的范围进行分割,这个操作也是由HRegionServer完成的。Client客户端访问HBase中的数据时,只需要通过Zookeeper和HRegionServer。

HRegion

HRegion是HBase中分布式存储的最小单元,一个HRegionServer上会有多个Region,但是一个Region只存在于一个Server。

Zookeeper

Zookeeper是一个分布式协调工具,在小鸟之前的文章中有所介绍。在HBase中,Zookeeper需要保证在任何时候,集群中都只有一个HMaster。并且Zookeeper会随时监测各个HRegionServer的状态,在Server失效的时候会通知HMaster来处理。Zookeeper还会存储所有Region的寻址入口以及HBase的schema和table的元数据。

以上就是关于HBase的组件介绍了,接下来小鸟会简单介绍一下一次HBase的运行过程。

1.首先HBase内部有一个名为hbase:meta的特殊表,它保存着集群上所有区域的列表、状态和位置。

2.客户端在第一次进行读操作的时候,Zookeeper会先查找hbase:meta的位置,并且缓存下来。这样后续的访问就可以节省查找hbase:meta的时间。只有当发生错误的时候,客户端才会再次去查看hbase:meta表。

3.客户端在进行写操作的时候,会由HMaster分配一个HRegionServer为其进行服务。操作信息会先追加到日志文件,然后加入内存中的memstore。如果memstore满了就会刷入hfile中。

值得注意的是,Hlog存放在HDFS上,因此即使此时HRegionServer崩溃,整个HBase也能出色的完成接下来的操作。

以上就是本次HBase构架介绍的所有内容,欢迎大家私信小鸟一起讨论更多的大数据知识。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190907A09UCQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券