文章目录
HBase角色
HMaster
功能:
- 监控RegionServer
- 处理RegionServer故障转移
- 处理元数据变更
- 处理region的分配或移除
- 空闲时对数据进行负载均衡
- 通过zookeeper发布自己的位置给客户端
RegionServer
功能
- 负责存储Hbase的实际数据
- 处理分配给它的region
- 刷新缓存到HDFS上
- 维护HLog
- 执行压缩
- 负责处理Region分片
组件
1) Write-Ahead logs
Hbase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定),但是把数据保存在内存中可能有更高概率引起数据丢失,为了解决这个问题,数据会写在一个Write-Ahead logfile 文件中,然后写入内存,所以在系统出现故障时,数据可以通过这个日志文件重建
2) HFile
磁盘上保存原始数据的实际物理文件,是实际的存储文件
3) Store
HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族
4) MemStore
内存存储,位于内存中,用来保存当前数据操作,所以当数据保存在WAL中之后,RegionServer会在内存中存储键值对
5) Region
Hbase表分片,Hbase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有不同的region
HBase的架构
HBase 一种是作为存储的分布式文件系统,另一种是作为数据处理模型的 MR 框架。因为日常开发人员比较熟练的是结构化的数据进行处理,但是在 HDFS 直接存储的文件往往不具有结构化,所以催生出了 HBase 在 HDFS 上的操作。如果需要查询数据,只需要通过键值便可以成功访问.
虽然HBase内置有zookeeper,但是一般会有其他zookeeper集群来监管master和regionServer,zookeeper通过选举,保证在任何时候,集群中只有一个活跃的HMaster,HMaster与HRegionServer启动时会向zookeeper注册,存储所有HRegion的寻址入口,实时监控HRegionserver的上线和下线信息,并实时通知给HMaster,存储Hbase的schema和table元数据,默认情况下,Hbase管理zookeeper实例,zookeeper的引入使得HMaster不再是单点故障,一般情况下会启动两个HMaster,非Active的HMaster会定期和Active HMaster通信以获取其最新状态,从而保证它实时更新,如果启动了多个HMaster反而增加了Active HMaster的负担
一个RegionServer可以包含多个HRegion,每个RegionServer维护一个HLog,和多个HFiles以及对应的MemStore,RegionServer运行在DataNode上,数量可以与DataNode数量一致