Hbase组件

客户端Client
- 整个HBase集群的入口
- 使用HBase RPC机制与HMaster和HRegionserver通信
- 与HMaster通信进行管理类的操作
- 与HRegionserver通信进行读写类操作
- 包含访问HBase的接口,并维护cache来加快对HBase的访问,与HRegionserver交互
程序协调服务Zookeeper
- 保证任何时候,集群中只有一个Master
- 存贮所有Region的寻址入口
- 实时监控Region server的上线和下线信息。并实时通知给Master
- 存储HBase的schema和table元数据
HBase主节点Master
- 管理用户对Table的增删改查操作
- 管理HRegionServer的负载均衡,调整Region分布
- 在Region Split后,负责新Region的分配
- 在HRegionServer停机后,负责失效HRegionServer上的Region迁移
- HMaster失效仅会导致所有元数据无法被修改,表的数据读写还是可以正常运行
HBase与Zookeeper
- HBase元数据存储在Zookeeper中
- 默认情况下,HBase管理Zookeeper示例,比如,启动或停止Zookeeper
- Zookeeper解决HBase单节点故障问题
- HMaster与HRegionserver启动时回向Zookeeper注册
寻找RegionServer过程详解

- Zookeeper(读取Zookeeper找到-ROOT-表的位置)
- -ROOT-(-ROOT-表包含.META.表所在的region列表,该表只会有一个Region;Zookeeper中记录了-ROOT-表的location)
- .META(这个表包含所有的用户空间region列表,已经RegionServer的服务器地址)
- 用户表
- Client第一次操作后,会将-ROOT-和.META.缓存到本地,不需要再访问zookeeper
(PS:0.96之后的版本,ZK不再存储ROOT表信息,直接存储META表信息)
HBase容错性
- Master容错:Zookeeper重新选择一个新的Master
无Master过程中,数据读取仍然照常进行;
无Master中,region切分,负载均衡无法进行; - RegionServer容错:定时向Zookeeper汇报心跳,如果一段时间内未出现心跳,master将该RegioinServer上的Region重新分配到其他RegionServer上;失效服务器上“预写”日志由服务器进行分割并派送给新的ReginServer
- zookeeper容错:Zookeeper高可靠的服务,不存在单点故障