Hbase架构

HBase架构

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

HBase存储

底层的存储基于Hadoop HDFS的:Region Server和HDFS DataNode往往分布在一起,这样Region Server就能够实现数据本地化

Regions

HBase表根据rowkey的范围被水平拆分成若干个region。每个region都包含了这个region的start key和end key之间的所有行(row)

HBase Master

负责Region的分配,DDL(创建、删除表)等操作:
统筹协调所有region server:
1.启动时分配regions,在故障恢复和负载均衡时重分配regions
2.监控集群中所有Region Server实例(从Zookeeper获取通知信息
管理员功能:
1.提供创建、删除和更新HBase Table的接口

Zookeeper

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

组件如何一起工作

Zookeeper用来协调分布式系统中集群状态信息的共享。Region Servers和在线HMaster和Zookeeper保持会话(session)。Zookeeper通过心跳检测来维护所有临时节点
每个Region Server都会创建一个ephemeral节点。HMaster会监控这些节点来发现可用的Region Server,同样它也会监控这些节点是否出现故障。
HMaster们会竞争创建ephemeral节点,而Zookeeper决定谁是第一个作为在线HMaster,保证线上只有一个HMaster。在线HMaster会给Zookeeper发送心跳,不在线的待机HMaster会监听active HMaster可能出现的故障并随时准备上位。
如果有一个Region Server或者HMaster出现故障或者各种原因导致发送心跳失败,它们与Zookeeper的session就会过期,这个ephemeral节点就会被删除下线,监听者们就会收到这个消息,然后会恢复故障的region server以及它所负责的region数据。而inactive HMaster关心的则是active HMaster下线的消息,然后竞争上线编程active HMaster

第一次读和写操作

有一个特殊的HBase Catalog表叫Metatable(它其实是一张特殊的HBase表),包含了集群中所有regions的位置信息。Zookeeper保存了这个Meta table的位置。
当HBase第一次读或者写操作到来时:
1.客户端从Zookeeper那边获取是哪一台Region Server负责管理Meta table
2.客户端会查询那台管理Meta table的Region Server,进而获知哪一台Region Server负责本次数据请求所需要的rowkey。客户端会缓存本次数据请求所需要的rowkey。客户端会缓存这个信息,以及Meta table的位置信息本身
3.然后客户端会去访问那台Region Server,获取数据

HBase Meta Table

Meta table是一个特殊的HBase table,它保存了系统中所有的region列表。这张table类似一个b-tree,结构大致如下:
Key:table,region start key,region id
Value:region server

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值