伸缩性
1."伸"的讲解(split)
策略一:增长式分裂策略(默认)
简化图如下:
过程讲解:
客户端建表后,会在一台机器上有一个Region,客户端不断put数据进来。随着数据的增加,当Region达到阈值【阈值可以配置】时,会进行**分裂(split)**操作。
由于两个同样Region无法存在于同一个服务器上,因此需要迁移操作。由HMaster进行主导,HMaster会通知HRegionMaster将分裂出来的Region迁移到到哪台服务器上。
同时HMaster会进行元数据的变更。在HMaster中的元数据记录中增加一条记录【标明Region1路径在哪台服务器上,Region2路径在哪台服务器上】
存在缺陷:
当进行数据迁移的时候,写数据会处于堵塞状态,从而产生一定的延迟。严重时甚至会导致数据的丢失。
策略二:预分裂策略(改良版)
简化图如下:
过程讲解:
在写入之前,提前预估表的数据量,算出所需分区的数量。提前在RegionServer上面进行分裂操作,即:提前把空间占好。
效果:
写性能大幅度提高,速度快。
数据分布均匀考虑:
可以在每个Region处设定一定的范围【以关系型数据库中表的主键为例,设定主键在1到100之间的进入Region1中,主键在101到200之间的进入Region2中,主键在201到300之间的进入Region3中】,这样数据进入Region中时会均匀的分配。
2."缩"的讲解(compact)
策略一:min_compact
具体讲解:2个小文件合并为一个大文件
策略二:major_compact
具体讲解:所有小的文件合并为一个大文件
必知点:
1.由于HBase的数据会存储于HDFS中,因此大文件(合并后文件)也是有上限的,即:一个大文件最多为128M。
2.合并操作:将StoreFile进行合并。
可用性
1.容灾性
HRegionServer容灾
由于HLog日志文件存在,实现了WAL(Write Ahead Log),即:在写入具体磁盘上之前会先写到HLog日志中去。当HRegionServer死了,HMaster会将HLog迁移到另一台服务器上,进行恢复。
2.统一管理
HMaster通过心跳统一管理HRegionServer。
per与HMaster和备用的HMaster backup之间都具有心跳。