HBase的架构原理

HBase的详细架构图:

架构的组件:

(1)Master

  所有Region Server的管理者(表级别的管理),其实现类为HMaster,主要作用如下:

     对于表的操作:create, delete, alter;

   对于RegionServer 的操作:分配regions 到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。

(2)zookeeper

   HBase 通过Zookeeper来做Master 的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。

(3)Region Server

  Region Server为Region的管理者(数据级别的管理),其实现类为HRegionServer,主要作用如下:

  对于数据的操作:get, put, delete;

  对于Region的操作:splitRegion、compactRegion。

(4)HDFS

  HDFS为HBase提供最终的底层数据存储服务,同时为HBase 提供高可用的支持。HBase中的数据最终都要存储到HDFS上。

(5)StoreFile

  保存实际数据的物理文件,StoreFile 以HFile 的形式存储在HDFS上。每个Store 会有一个或多个StoreFile(HFile),数据在每个StoreFile 中都是有序的。

(6)MemStore

  写缓存,由于HFile 中的数据要求是有序的,所以数据是先存储在MemStore中,排好序后,等到达刷写时机才会刷写到HFile,每次刷写都会形成一个新的HFile。

(7)WAL

  由于数据要经MemStore 排序后才能刷写到HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile 的文件中,然后再写入MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

 

  Store其实就是代表的是表的列族,只不过在物理上叫Store,逻辑上成为列族。

  Region就是类似于表的概念,在HBase中它是一张表进行横向切分的切片,横跨多个列族。

  从HBase的结构图可以看出,用户Client并没有和Master直接相连,而是直接连接的zookeeper,zookeeper承担了一部分Master的功能,Client除了连接zookeeper还连接了RegionServer,所以即使Master挂掉了,用户客户端依旧可以完成对数据的读写操作。

原文地址:https://www.cnblogs.com/yxym2016/p/13440550.html