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

在这里插入图片描述
在这里插入图片描述

二、 Region Server
2.1.1 概念
  1. 每一个从节点有一个Region Server,一个Region Server可以管理多个Region,
  2. 一个Region只由一个Region Server管理。 Region Server 用于处理来自客户端的读取,写入,更新和删除请求。
  3. 遵循Region的设定值来确定Region的大小,默认256MB,最大4GB
    在这里插入图片描述
2.1.2 存放示例图

Hbase表格的行将拆分为Region放入各个Region Server中
在这里插入图片描述

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崩溃,则这部分写入缓存数据将丢失)。

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

五、 Hbase特征

在这里插入图片描述

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

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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐