您的位置:首页 > 运维架构 > 网站架构

HBase的架构和原理(一)--概述

2020-07-14 06:13 232 查看

Hbase采用HMaster/HRegionServer主从架构搭建集群。由zookeeper、HMaster、HRegionServer、HDFS结点组成

Zookeeper的作用

  • HBase启动时,自动在Zookeeper上注册一个临时节点/hbase/master
  • 后续启动HMaster(启动命令为:hbase-daemon.sh start master),自动在/hbase/backup-masters目录下注册节点,这个目录下的节点被标记为一个热备份节点
  • 活跃的HMaster和备份HMaster节点都会定期向Zookeeper发送心跳信息,如果一段时间内Zookeeper没有收到active HMaster的心跳,就会从backup-masters中随机挑选一个节点切换为active状态
  • 热备份HMaster在将自己变为Active HMaster之前,会在/hbase/backup-masters目录下生成自己的临时节点
  • HReginServer启动,在zk生成临时节点/hbase/rs
    HMaster不直接监控HReginServer,而是监控zk的/hbase/rs节点。若一个HReginServer节点宕机,zk收不到这个HReginServer节点的心跳,zk就会去删除与之对应的节点值

∴ ZooKeeper为HBase集群提供协调服务,它管理着HMaster和HRegionServer的状态(available/alive)及整个集群的元数据
∴ 当HMaster宕机的时候实现HMaster之间的failover(失败恢复)
∴ 当HRegionServer宕机时通知给HMaster,从而转移宕机的HRegionServer中的HRegion集合

HMaster的作用

  • HBase对外提供了元数据方法的接口,实现对表的增删改查操作
  • 实现HRegionServer的负载均衡、及HRegion的分配和调整

HRegionServer的作用

  • HRegionServer一般和DataNode在同一台机器上运行,实现数据的本地性
  • HRegionServer存储和管理多个HRegion,由WAL(HLog)、BlockCache、Region组成
  • HLog是HDFS上的一个文件,HMaster对HRegionServer的所有写操作请求都会先保证写入这个HLog文件后,才会真正更新MemStore,最后写入HFile中。采用这种模式,即使HRegionServer宕机后,依然可以从该Log文件中恢复数据。一般一个HRegionServer服务器只有一个HLog文件。0.94之前,所有的写操作串行执行,1版本之后,写操作可以并发执行。
  • BlockCache是一个读缓存,基于局部性原理,把数据读取到内存,提高了读缓存的命中率,提升了读的性能。BlockCache缓存过大时,采用LRU(最近最少使用)策略回收内存。采用“空间局部性原理”:CPU在某一时刻需要某个数据,那么有很大的概率在一下时刻它需要的数据在其附近,将其附近数据放入缓存。采用“时间局部性原理”:某个数据在被访问过一次后,它有很大的概率在不久的将来会被再次的访问,将该数据放入缓存。
  • HRegion由一个或者多个HStore(HStore)构成,每个HStore保存一个列族,由一个MemStore 、0个或多个StoreFile组成。
  • HRegionServer和DataNode一般会放在相同的Server上实现数据的本地化(避免或减少数据在网络中的传输,节省带宽)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: