众所周知,Hadoop框架包括两个核心组件:HDFS和MapReduce,其中HDFS是文件存储系统,负责数据存储;MapReduce是计算框架,负责数据计算。它们之间分工明确、低度耦合、相互关联。对于Hbase数据库的核心组件可以分为4个模块:客户端Client、协调服务模块zooKeeper、主节点HMaster、和Region节点RegionServer,这些组件的描述和相互之间的关联如下图:
下面是各个模块的详细介绍:
1.客户端Client
客户端Client是整个HBase系统给的入口。使用者直接通过客户端操作Hbase。客户端使用Hbase的RPC机制与HMaster和RegionServer进行通信。对于管理类操作,Client与HMaster进行RPC通信;对于数据读写类操作,Client与RegionServer进行RPC交互。这里客户端可以是多个,并不限定是原生Java结论,还有Thrift、Avro、Rest等客户端模式,甚至MapReduce也可以算作一种客户端。
2.协调服务组件ZooKeeper
Zookeeper Quorum(队列)负责HBase中多HMaster的选举、服务器之间状态的同步等。再具体一些就是,Hbase中Zookeeper实例负责的协调工作有:存储Hbase元数据信息、实时监控RegionServer、存储所有Region的寻址入口,当然还有最常见的功能就是保证Hbase集群中只有一个HMaster节点。
3.主节点HMaster
HMaster没有单点问题,在Hbase中可以启动多个HMaster,通过Zookeeper的Master选举机制保证总有一个Master正常运行并提供服务,其他H