HBase学习之二HBase架构

HBase体系结构

HBase学习之二HBase架构_第1张图片

HBase 客户端

HBase 客户端Client 提供了 Shell 命令行接口,原生JAVA API编程接口。HBase 客户端支持所有常见的DML 操作 以及DDL操作。

HBase 客户端访问数据行之前,首先需要通过元数据表定位目标数据所在的的RegionServer。之后才会发送请求到该RegionServer。同时这些元数据会被缓存在客户端本地,以方便之后的请求访问,如果集群RegionServer 发送宕机或者执行了负载均衡,从而导致数据分片发送迁移,客户端需要重新请求最新的元数据缓存在本地。

Zookeeper

  • 实现Master 高可用:通常情况下系统中只会有一个Master,一旦Active Master由于异常宕机,Zookeeper会检测到该宕机事件,并通过一定机制选举出新的Master,保证系统正常运行。
  • 管理系统核心元数据:比如,管理当前系统中正常工作的RegionServer集合,保存系统元数据hbase:meta所在的RegionServer地址等。
  • 参与RegionServer 宕机恢复:Zookeeper通过心跳可以感知到RegionServer是否宕机,并在宕机后通知Master进行宕机处理。
  • 实现分布式锁:HBase中对一张表进行各种管理操作,比如进行Alter 操作,需要先加表锁,防止其他用户同一时间对同一张表进行管理操作,造成状态不一致。

Master

master 主要负责HBase 系统的各种管理工作。

  • 处理用户的各种管理请求,包括建表,修改表,权限操作,切分表合并数据分片以及Compaction等。
  • 管理集群中所有的RegionSever,包括RegionServer 中Region的负载均衡,RegionServer的宕机恢复以及Regin的迁移等,
  • 清理过期日志以及文件,Master会每隔一段时间检测HDFS中HLog是否过期,HFile是否已经被删除,并在过期之后将其删除。

RegionServer

RegionServer主要用来响应用户的IO请求,是HBase中最核心的模块,由WAL(HLog) ,BlockCache 以及多个Regin构成。

  • WAL(HLog):HLog在HBase中有两个核心作用,其一,用于实现数据的高可靠性,HBase数据随机写入时,并非直接写入HFile 数据文件,而是先写入缓存,再异步刷新落盘。为了防止缓存数据丢失,数据写入缓存之前需要首先顺序写入HLog。这样即使缓存数据丢失,乃然可以通过HLog日志恢复;其二,用于实现HBase集群间主从复制,通过回放主集群推送过来的HLog日志实现主从复制。
  • BlockCache:HBase系统中的读缓存。客户端从磁盘读取数据之后通常会将数据缓存都系统内存中,后续访问同一行数据可以直接从内存中获取而不需要访问磁盘。
  • Region:数据表的的一个分片,当数据表大小超过一定阈值就会水平切分,分裂为两个Region。Region 是集群负载均衡的基本单位,通过一张表Region会分布在整个集群的多台RegionServer上,一个ReginServer上会管理多个Region,当然,这些Region一般来自不同的数据表。

HDFS

HBase 底层依赖HDFS组件存储实际数据,包括用户数据文件,HLog日志文件等最终都会写入HDFS落盘。HDFS是Hadoop生态圈内最成熟的组件之一,数据默认三副本存储策略可以有效保证数据的高可用性。

HBase 原理

读流程

HBase学习之二HBase架构_第2张图片

  1. Client 需要先访问 zookeeper,获取元数据。从 meta 表读取 region 的位置,然后读取 meta 表中的数据。meta中又存储了用户表的 region 信息。

  2. 根据 namespace、表名和 rowkey 在 meta 表中找到对应的 region 信息。

  3. 找到这个 region 对应的 regionserver。

  4. 先从 MemStore 找数据,如果没有,再到 BlockCache 里面读。

  5. BlockCache 还没有,再到 StoreFile 上读(为了读取的效率)。

  6. 如果是从 StoreFile 里面读取的数据,不是直接返回给客户端,而是先写入 BlockCache,

    再返回给客户端

写流程

HBase学习之二HBase架构_第3张图片

  1. Client 向 RegionServer 发送写请求。
  2. RegionServer 将数据写到 HLog(write ahead log)。为了数据的持久化和恢复。
  3. RegionServer 将数据写到内存(MemStore)
  4. 反馈 Client 写成功

你可能感兴趣的:(大数据,数据库,hbase)