1.基本架构图
2.基本组件
2.1 client
包含访问HBase接口,并维护cache来加快对HBase的访问;
2.2 zookeeper
(1)保证在任何时候,集群只有一个master;
(2)存储所有region的寻址入口;
(3)实时监控region server的上线下线活动信息,并实时通知给master;
(4)存储HBase的Schema和table元数据;
2.3 HMaster
(1)为region Server分配region;
(2)负责region server的负载均衡;
(3)发现失效的region server并重新分配其他region;
(4)管理用户对table(admin)的增删改查操作;
2.4 Region Server
(1)region server维护region,处理对这些region的IO请求;
(2)region server负责切分在运行过程中变得过大的region;
2.5 zookeeper的作用
(1)HBase依赖zookeeper;
(2)默认情况下,HBase管理zookeeper实例,比如启动或者停止zookeeper;
(3)master与region servers启动时会向zookeeper中注册;
(4)zookeeper的引入是的master不再是单点故障;
单点故障:单个点发生的故障,通常应用与计算系统及网络;实际指的是单个发生故障的时候会涉及到整个系统或者网络,从而导致整个系统或者网络瘫痪;zookeeper能够保证集群中只要能够一半以上的节点是健康的,那么该集群就是可用的;
2.6 HBase容错性
2.6.1 master容错
zookeeper重新选择一个新的master;
无master的过程中,数据读取仍照常运行;
无master的过程中,region且反,负载均衡等无法进行;
2.6.2 region server容错
定时向zookeeper汇报心跳,如果一旦一段时间内未出现心跳,master将该region server上的region重新分配到其他region server上;
失效服务器上“预写”日志(HLOG)有主服务器进行分割并派送给新的region server;
2.6.3 zookeeper容错
zookeeper是一个可靠的服务,一般配置三到五个实例;
2.7 region寻址
旧寻址方式:在HBase0.96版本以前,HBase有两个特殊的表,分别是-ROOT-表和.META.表,其中-ROOT-的位置存储在zookeeper中,-ROOT-本身存储了.META. Table的regionInfo信息,并且-ROOT-不会分裂,只有一个region;而.META.表可以被切分成多个region;
第一步:client请求ZK获取-ROOT- 所在的regionserver地址;
第二步:client请求-ROOT-所在的RS地址,获取.METAE.表的地址,client会将-ROOT-的相关信息cache下来,以便下一次快速访问;
第三步:client请求.META.表的RS地址,获取访问数据所在region server的地址,client会将.META.的相关信息cache下来,以便下一次快速访问;
第四步:client请求访问数据所在region server的地址,获取对应的数据;
新的寻址方式:0.96版本以后将-ROOT-表去掉了
第一步:client请求ZK获取.META.所在的region server的地址;
第二步:client请求.META.所在的region server获取访问数据所在的region server地址,client会将.META.的相关信息cache下来,以便下一次快速访问;
第三步:client请求数据所在的region server,获取所需要的数据;
3.HBase应用场景
3.1 需要对数据进行随机读操作或者随机写操作;
3.2 大数据上高并发操作,比如每秒对PB级数据进行上千次操作;
3.3 读写访问均是非常简单的操作;