HBASE架构中各组件的功能作用
一、HBASE结构图
二、HBase架构中的客户端Client
客户端有以下几点作用:
1. 整个HBase集群的访问入口;
2. 使用HBase RPC机制与HMaster和HRegionServer进行通信;
3. 使用HMaster进行通信进行管理类操作;
4. 与HRegionServer进行数据读写类操作;
5. 包含访问HBase的接口,并维护cache来加快对HBase的访问。
三、协调服务组件Zookeeper
Zookeeper的作用如下:
1. 保证任何时候,集群中只有一个HMaster;
2. 存储所有的HRegion的寻址入口;
3. 实时监控HRegionServer的上线和下线信息,并实时通知给HMaster;
4. 存储HBase的schema和table元数据;
5. Zookeeper Quorum存储-ROOT-表地址、HMaster地址。
四、主节点HMaster
HMaster的主要功能如下:
1. HMaster没有单节点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行,主要负责Table和Region的管理工作。
如何启动多个HMaster?
通过hbase-daemons.sh启动,步骤如下:1)在hbase/conf目录下编辑backup-masters;2)编辑内容为自己的主机名;3)保存后,执行如下命令:bin/hbase-daemons.sh start master-backup。
2. 管理用户对表的增删改查操作;
3. 管理HRegionServer的负载均衡,调整Region分布(在命令行里面有一个tools,tools这个分组命令其实全部都是Master做的事情);
4. Region Split后,负责新Region的分布;
5. 在HRegionServer停机后,负责失效HRegionServer上Region迁移工作。
五、Region节点HRegionServer
HRegionServer的功能如下:
1. 维护HRegion,处理HRegion的IO请求,向HDFS文件系统中读写数据;
2. 负责切分运行过程中变得过大的HRegion;
3. Client访问HBase上数据的过程并不需要Master参与(寻址访问zookeeper和HRegionServer,数据读写访问HRegionServer),HMaster仅仅维护着table和Region的元数据信息,负载很低。
六、HBase与Zookeeper的关系
1. HBase依赖Zookeeper
首先HMaster和RegionServer都需要和Zookeeper交互,因为RegionServer上线了还需要交互,之后Zookeeper知道了告诉HMaster,而下线或断开了Zookeeper知道了也告诉HMaster;同时HMaster还管理RegionServer,HMaster还会在HDFS上写Region数据。
2. 默认情况下,HBase管理Zookeeper实例,比如,启动或者停止Zookeeper;
3. HMaster与HRegionServer启动时会向Zookeeper注册;
4. Zookeeper的引入使得HMaster不再是单点故障。