hbase工作 架构原理

1. HBase系统架构图

在这里插入图片描述

整个HBase架构重点关注几部分:HMaster、HRegionServer、Zookeeper、HRegion(内部包括HLog、StoreFile、MemStore)。

2. HMaster介绍

Hbase集群采用的是master/slave模式,HMaster是集群老大(后面简称Master),统筹管理,所以干的底层杂活不多,负载不高。

2.1 Master职责

(1)为RegionServer分配Region。
(2)负责RegionServer的负载均衡。
(3)发现下线或dead的RegionServer,并重新分配其上的Region。
(4)回收HDFS上的垃圾文件。
(5)处理Schema的更新请求。

2.2 Master工作机制

(1) master上线

1)从zookeeper上获取唯一一个代表active master的锁,用来阻止其它master成为master。
2)扫描zookeeper上的server父节点,获得当前可用的region server列表。
3)和每个region server通信,获得当前已分配的region和region server的对应关系。
4)扫描.META.region的集合,计算得到当前还未分配的region,将他们放入待分配region列表。

(2) master下线

由于master只维护表和region的元数据,而不参与表数据IO的过程(寻址访问zk和RegionServer,数据读写访问RegionServer),所以Master的负载很低,master下线仅导致所有元数据的修改被冻结(无法创建删除表,无法修改表的schema,无法进行region的负载均衡,无法处理region 上下线,无法进行region的合并,唯一例外的是region的split可以正常进行,因为只有region server参与),表的数据读写还可以正常进行。因此master下线短时间内对整个hbase集群没有影响。从上线过程可以看到,master保存的 信息全是可以冗余信息(都可以从系统其它地方收集到或者计算出来),因此,一般hbase集群中总是有一个master在提供服务,还有一个以上 的’master’在等待时机抢占它的位置。

3. HRegionServer介绍

HRegionServer(后面简称RegionSever)是集群中的slave,负责处理具体的读写请求及对数据的compact和split等具体过程。

3.1 RegionServer职责

(1) 维护Master给它分配的Region,并处理这些Region的I/O请求。
(2) 负责切分在运行过程中不断变大的Region。

3.2 RegionServer工作机制

(1) regionserver上线

master通过zk来获取regionserver信息。当某个regionserver启动时,首先会在zk的server目录下建立一个属于自己的文件,并获得该文件的独占锁。由于master订阅了server目录的变更消息,所以当server目录下的文件出现新增或变更时,zk会及时通知master。

(2) regionserver下线

当region server下线时,它和zookeeper的会话断开,zookeeper而自动释放代表这台server的文件上的独占锁。而master不断轮询 server目录下文件的锁状态。如果master发现某个region server丢失了它自己的独占锁,(或者master连续几次和region server通信都无法成功),master就是尝试去获取代表这个region server的读写锁,一旦获取成功,就可以确定:

  1. region server和zookeeper之间的网络断开了。
  2. region server挂了。
    的其中一种情况发生了,无论哪种情况,region server都无法继续为它的region提供服务了,此时master会删除server目录下代表这台region server的文件,并将这台region server的region分配给其它还活着的同志。
    如果网络短暂出现问题导致region server丢失了它的锁,那么region server重新连接到zookeeper之后,只要代表它的文件还在,它就会不断尝试获取这个文件上的锁,一旦获取到了,就可以继续提供服务。

4. Zookeeper介绍

Zookeeper应该可以说是在Hadoop生态中主从结构架构的设计中是大众情人,它能够很好的协调整个集群统统一有序的工作。在HBase的架构中,ZooKeeper提供了类似文件系统一样的访问目录和文件(称为znode)的功能,通常分布式文件系统利用它协调所有权、注册服务、监听更新。
每台Region服务器在ZooKeeper中注册一个自己的临时节点,主服务器会利用这些临时节点来发现可用服务器,还可以利用临时节点来跟踪机器故障和网络分区。
在ZooKeeper服务器中,每个临时节点都属于某一个会话,这个会话是客户端连接ZooKeeper服务器后自动生成的。每个会话在服务器中有一个唯一的id,并且客户端会以此id不断的向ZooKeeper发送“心跳”,一旦发生故障ZooKeeper客户端进程死掉,ZooKeeper服务器会判定该会话超时,并自动删除属于它的临时节点。
HBase还可以利用ZooKeeper确保只有一个主服务器在运行,存储用于发现Region的引导位置,作为一个Region服务器的注册表,一级实现其他目的。ZooKeeper是一个关键组成部分,没有它HBase就无法工作。

Zookeeper的主要功能:

(1) 保证master的唯一性。 原理:master启动时会从ZK上获取一个active master锁,阻止其他节点成为master。
(2) 实时监控RegionServer的状态,将Regionserver上下线的消息及时告知master。
(3) 存储所有Region的寻址入口(即ROOT表在哪台服务器上)。
(4) 存储Hbase的Scema(Zookeeper存的是-ROOT-和.META.这两张表的location,实际存在HBase中),包括有哪些table,每个table有哪些column family。

5. Region介绍

Region是HBase存储和管理数据的基本单位。Region和RegionServer是多对一的关系,即一个Region只能同时被一个RegionServer使用,而一个RegionServer可以同时处理多个Region。

5.1 Region和Table的关系

Region实际是Table在行方向上的一个个划分,一般来说一个表在初始的时候只有一个Region,随着数据的增多,当达到某个阈值时,ReginServer就会把这个Region切分成两个Region,以此类推。

5.2 Region细分

继续深究的话,Region还是可以再细分的,它是由一个或多个Store组成的,在这里有必要搞清楚几个基本概念:HFile、HLog、StoreFile、MemStore。

猜你喜欢

转载自blog.csdn.net/luanpeng825485697/article/details/82048282