HBase与Hadoop架构图:
HBase架构组成:
HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由以下类型节点组成:
- HMaster节点
- HRegionServer节点
- ZooKeeper集群
- Hbase的数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode等。RegionServer和DataNode一般会放在相同的Server上实现数据的本地化(避免或减少数据在网络中的传输,节省带宽)。
HMaster节点
- 管理HRegionServer,实现其负载均衡。
- 管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上。
- 实现DDL操作(Data Definition Language,namespace和table的增删改,column family的增删改等)。
- 管理namespace和table的元数据(实际存储在HDFS上)。
- 权限控制(ACL)。
HRegionServer节点
- 存放和管理本地HRegion。
- 读写HDFS,管理Table中的数据。
- Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/ HRegionServer后)。
ZooKeeper集群
- 存放整个 HBase集群的元数据以及集群的状态信息。以及RS服务器的运行状态
- 实现HMaster主备节点的failover
HBase Client通过RPC方式和HMaster、HRegionServer通信;一个HRegionServer可以存
放1000个HRegion(1000个数字的由来是来自于Google的Bigtable论文);底层Table数据
存储于HDFS中,而HRegion所处理的数据尽量和数据所在的DataNode在一起,实现数据的
本地化;数据本地化并不是总能实现,比如在HRegion移动(如因Split)时,需要等下一次
Compact才能继续回到本地化。