首页 > 代码库 > HBase架构

HBase架构

   文章作者:luxianghao

 

   文章来源:http://www.cnblogs.com/luxianghao/p/6573817.html  转载请注明,谢谢合作。

 

   免责声明:文章内容仅代表个人观点,如有不当,欢迎指正。

 

   ---

HBase组件

HBase是包含3种类型server的主备模式架构:

  • RegionServer提供数据的读写功能,操作数据的时候,client(客户端)直接和RegionServer交互
  • Master处理Region的分配(assignment),增删表(DDL: create, delete tables)
  • Zookeeper维持着整个集群的状态

 

Hadoop DataNode存储着RegionServer需要的数据,所有的HBase数据都存储在HDFS文件里,RegionServer一般会和HDFS

DataNode放在一起,这能够使RegionServer就近的使用数据(locality)。HBase的数据是就近写入的,再次使用这些数据的时

候也是就近的,但是当region被移走的时候,就不是就近使用数据了,等到compaction的时候,这种情况会得到改善。

 

HDFS NameNode保存了所有组成文件的数据块的元信息(metadata)。

 

 

技术分享

 

REGIONS

HBase根据行健(row key)的范围把表水平的分割成很多Region。一个Region包含着从这个Region的起始建(start key)到结

束键(end key)的所有行。Region会被分配到集群中的不同节点,这些节点被称作RegionServer,提供数据的读写功能。一个

RegionServer大约包括1000个Region。

技术分享

 

HBASE HMASTER

Region的分配,DDL(增删表)等操作都是由HBase Master来处理的。

Master的功能如下:

  • 协调RegionServer
  1. 在启动的时候分配Region,在故障恢复(recovery)和负载(load balance)的时候重新分配Region
  2. 监控集群中所有的RegionServer实例(instance),监听来自Zookeeper的通知
  • 管理功能
  1. 提供新建、删除、更新表的接口

技术分享

 

Zookeeper

HBase用Zookeeper作为一个分布式的协调服务,来维持集群中server的状态。Zookeeper记录着哪些server是存活的而且可用的,

并且会发出server不可用的通知。Zookeeper通常用3个或者5个服务器来达成一致,从而保证共享的一致的状态。

技术分享

 

这些组件是怎么在一起协同工作的?

Zookeeper用来为分布式系统协调共享的一致的状态信息。RegionServer和active HMaster用session和Zookeeper保持连接。

Zookeeper为active session通过心跳(heartbeat)的方式维持着临时的节点。

技术分享

每一个RegionServer都会在Zookeeper上创建一个临时的节点。HMaster通过监控这些节点来找出可用的RegionServer,同样

的,通过这些节点信息,HMaster也能判断哪些RegionServer不可用。多个(一般是两个)HMaster会在创建临时节点的时候出

现竞争。第一个在Zookeeper上创建节点的HMaster会成为唯一活跃(active)的master。这个活跃的HMaster会发送心跳信息给

Zookeeper,非活跃状态的HMaster会监听活跃HMaster不可用的通知。

 

如果RegionServer或者活跃的HMaster发送心跳信息失败,相关的session就会过期,相关的临时节点也会被删除。关于删除的更

改会被通知给监听者。活跃的HMaster会监听RegionServer,从而恢复那些宕掉的Region。非活跃状态的HMaster会监听活跃的

HMaster是否可用,如果后者宕掉,那么前者就会从非活跃状态变成活跃状态。

 

待续。。。

 

参考文档:

  https://mapr.com/blog/in-depth-look-hbase-architecture/

HBase架构