,然后分发到其他Region Server上进行恢复。
HLog文件就是一个普通的Hadoop Sequence File,Sequence File的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是”写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequencenumber。HLog Sequece File的Value是Hbase的KeyValue对象,即对应HFile中的KeyValue。
HLog会被定期回滚。
?
3) Store
每个Region由一个或多个HStore组成,每个HStore保存一个列族的所有数据;
每个HStore由一个memStore和0个或多个StoreFile组成;
StoreFile以Hfile的格式存储在HDFS上的,这些文件都是B树结构。
?
![\]()
4) 客户端更新操作流程
先连接有关的HRegionServer,然后向Region提交变更,
提交的数据首先写入WAL(Write-Ahead Log)和MemStore;
当memstore中的数据量达到某个阀值,HRegionServer会启动flashcache进程写入StoreFile;
当StoreFile文件的数量增加到一定阀值后,系统会将多个StoreFile进行合并,在合并的过程中会进行版本合并和删除工作,形成更大的StoreFile
当单个StoreFile大小超过一定阀值后,会把当前的Region分隔成为两个Regions,并由HMaster分配到相应的Region服务器,实现负载均衡
客户端检索数据时,先在MemStore找,找不到再找StoreFile。
?
5) HMaster
HBase只有一个Hmaster,主服务器程序
HMaster将Region分配给Region Server服务器,协调Region Server服务器的负载并维护集群的状态
HMaster不会对外(Region Server服务器和客户端)提供数据服务,而是由RegionServer服务器负载所有Regions的读写请求和操作;
如果HRegion Server发生故障终止后,HMaster会通过ZooKeeper感知到,并处理相应的HLog文件,然后重新分配失效的Regions;
HMaster还负责管理表的schema和对元数据的操作;
HMaster失效仅会导致所有元数据无法被修改,但表的数据读写还是可以正常进行的。