全网最细致的 HBase 内核解析

HBase是一个基于Hadoop HDFS的分布式数据库,由Region Server、HMaster和Zookeeper组成。Region Server负责数据读写,HMaster管理Region分配和DDL操作,Zookeeper维护集群状态。数据存储在Region中,按rowkey范围划分。HBase利用Zookeeper进行故障检测和角色切换。读写操作首先通过Meta table定位数据,然后访问Region Server。故障恢复时,WAL用于恢复未持久化的数据。HBase通过Minor和Major Compaction管理HFile,优化存储并删除过期数据。
摘要由CSDN通过智能技术生成

HBase 架构组件

物理上,Hbase 是由三种类型的 server 组成的的主从式(master-slave)架构:

  • Region Server 负责处理数据的读写请求,客户端请求数据时直接和 Region Server 交互。
  • HBase Master 负责 Region 的分配,DDL(创建,删除 table)等操作。
  • Zookeeper,作为 HDFS 的一部分,负责维护集群状态。

当然底层的存储都是基于 Hadoop HDFS 的:

  • Hadoop DataNode 负责存储 Region Server 所管理的数据。所有的 HBase 数据都存储在 HDFS 文件中。Region Server 和 HDFS DataNode 往往是分布在一起的,这样 Region Server 就能够实现数据本地化(data locality,即将数据放在离需要者尽可能近的地方)。HBase 的数据在写的时候是本地的,但是当 region 被迁移的时候,数据就可能不再满足本地性了,直到完成 compaction,才能又恢复到本地。
  • Hadoop NameNode 维护了所有 HDFS 物理 data block 的元信息。

Regions

HBase Table)根据 rowkey 的范围被水平拆分成若干个 region。每个 region 都包含了这个region 的 start key 和 end key 之间的所有row)。Regions 被分配给集群中的某些节点来管理,即 Region Server,由它们来负责处理数据的读写请求。每个 Region Server 大约可以管理 1000 个 regions。

HBase Master

也叫 HMaster,负责 Region 的分配,DDL(创建,删除表)等操作:

统筹协调所有 region server:

  • 启动时分配 regions,在故障恢复和负载均衡时重分配 regions
  • 监控集群中所有 Region Server 实例(从 Zookeeper 获取通知信息)

管理员功能:

  • 提供创建,删除和更新 HBase Table 的接口

Zookeeper

HBase 使用 Zookeeper 做分布式管理服务,来维护集群中所有服务的状态。Zookeeper 维护了哪些 servers 是健康可用的,并且在 server 故障时做出通知。Zookeeper 使用一致性协议来保证分布式状态的一致性。注意这需要三台或者五台机器来做一致性协议。

这些组件是如何一起工作的

Zookeeper 用来协调分布式系统中集群状态信息的共享。Region Servers 和 在线 HMaster(active HMaster)和 Zookeeper 保持会话(session)。Zookeeper 通过心跳检测来维护所有临时节点(ephemeral nodes)。

每个 Region Server 都会创建一个 ephemeral 节点。HMaster 会监控这些节点来发现可用的 Region Servers,同样它也会监控这些节点是否出现故障。

HMaster 们会竞争创建 ephemeral 节点,而 Zookeeper 决定谁是第一个作为在线 HMaster,保证线上只有一个 HMaster。在线 HMaster(active HMaster) 会给 Zookeeper 发送心跳,不在线的待机 HMaster (inactive HMaster

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值