Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍

一、Region

  1. 由于Hbase运行在HDFS上,HDFS又是分布式的有很多的节点,一大个Hbase的表格一个节点是存不下的,所以Hbase的表格将会以行进行拆分后存放到各个节点中,拆分的部分就叫做Region(区域).
  2. Region就是一定范围内存储在一起的行,默认大小问256MB,可以再hbase-site.xml文件中进行配置,最大为4GB。

Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第1张图片
Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第2张图片

二、 Region Server

2.1.1 概念
  1. 每一个从节点有一个Region Server,一个Region Server可以管理多个Region,
  2. 一个Region只由一个Region Server管理。 Region Server 用于处理来自客户端的读取,写入,更新和删除请求。
  3. 遵循Region的设定值来确定Region的大小,默认256MB,最大4GB
    Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第3张图片
2.1.2 存放示例图

Hbase表格的行将拆分为Region放入各个Region Server中
Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第4张图片

2.1.3 Region Server 服务机制
  1. 一个Region Server可以管理多个Region, 一个Region只由一个Region Server管理。
  2. Hfile 实际存储文件,表格被拆分的具体数据存放在Hfile文件中,Hfile存放在磁盘里。
  3. MemStore 写入缓存,用于存储尚未写入磁盘的新数据。一个区域中的每个列族都有一个MemStore。减少磁盘浪费
  4. Block Cache 读取缓存,加快读写响应时间,减少延迟
  5. WAL 预写日志,防止Region Server崩溃时导致数据丢失

读取数据的整体过程:用户向Region Server发出请求,Region Server 去 BlockCache里查看最近频繁查看的数据有没有用户需要的,如果没有再去Hfile里查询,Region Server 返回用户响应,用户拿到查询数据。(因为去Hfile所在磁盘里查询需要花费不少时间,查询BlockCache时间少,所以BlockCache大大减少了延迟。)

写入数据的整体过程:用户向Region Server发出请求,Region Server响应, 先安排数据存入Memstore,并备份日志到WAL,当Memstore数据量到一定数量后将创建新的HFile,然后将数据转移至Hfile写入磁盘。写入完毕(如果不用Memstore,直接写HFile将浪费磁盘空间并且无法更新,如果没有WAL,在数据写入Memstore时如果Region Server崩溃,则这部分写入缓存数据将丢失)。

Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第5张图片

三、 HMaster

  1. HMaster管理Region Server
  2. HMaster负责创建和删除表格
  3. HMaster负责给RegionServer分配Region
  4. HMaster负责协调管理RegionServer

Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第6张图片

四、 Zookeeper

  1. HBase使用ZooKeeper作为分布式协调服务来维护集群中的RegionServer状态。
  2. 与RegionServer建立客户端通信。
  3. Zookeeper维护RegionServer是否处于活动状态并且可用,并提供RegionServer故障通知。
  4. Zookeeper可以帮助我们跟踪HBase所在的所有RegionServer。
  5. HMaster通过实际联系Zookeeper来获取RegionServer的详细信息。

Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第7张图片

五、 Hbase特征

Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第8张图片

  1. 一致性
    1)每个值只出现在一个REGION
    2)同一时间一个Region只分配给一个Region服务器
  2. 原子读写
    1)原子性操作是指:如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行
  3. 分片
    1)分区(partition),在MongoDB,Elasticsearch中被称为分片(shard),在HBase中称之为区域(Region),Bigtable中则是表块(tablet),Cassandra中是虚节点(vnode).但是分区(partition)是约定俗成的叫法。
  4. 高可用性
    Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第9张图片

1) 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。
2)如果HMaster挂掉的话:
i)不能建表修改表了,但是可以在已经存在的表增删改查数据,因为这些操作是RegionServer做的.
Region分配也是由HMaster来处理的.如果HMaster挂掉的话,那么Region分配也是无法完成的.
ii)要想HMaster高可用的话,你需要启动多个HMaster进程.如果有一个HMaster挂掉的话,其它的HMaster可以顶上.
5. 实时处理
Hbase三大组件 -- Region Server、HMaster、Zookeeper 介绍_第10张图片

1)实时查询,可以认为是从内存中查询,一般响应时间在1秒内。HBase的机制是数据先写入到内存中,当数据量达到一定的量(如128M),再写入磁盘中, 在内存中,是不进行数据的更新或合并操作的,只增加数据,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。

你可能感兴趣的:(高级数据库,大数据,hbase,java-zookeeper,zookeeper)