StochasticLoadBalancer 策略:
它对于负载的定义不再是 Region 个数这么简单 , 而是由多种独立负载加权计算的复合值 , 这些独立负载包括:
- Region 个数,Region 负载,读请求数,写请求数 , Storefile 大小,MemStore 大小,数据本地率,移动代价 。
- HBase 通过不断随机挑选迭代来找到一组 Region 迁移计划,使得代价值最小 。
MemStore中的数据时间超过1小时,会Flush到磁盘 。
HRegionServer的全局MemStore的大小超过某大小会触发Flush到磁盘,默认是堆大小的40% 。
Compact机制HBase需要在必要的时候将小的Store File合并成相对较大的Store File , 这个过程为Compaction 。
- 为了防止小文件过多 , 以保证查询效率 。
Minor Compaction 小合并:
- 在将Store中多个HFile合并为一个HFile 。
- 这个过程中,达到TTL(记录保留时间)会被移除,删除和更新的数据仅仅只是做了标记,并没有物理移除 。
- 这种合并的触发频率很高 。
- 合并Store中所有的HFile为一个HFile 。
- 这个过程有删除标记的数据会被真正移除 , 同时超过单元格maxVersion的版本记录也会被删除 。
- 合并频率比较低,默认7天执行一次,并且性能消耗非常大 , 建议生产关闭(设置为0),在应用空闲时间手动触发 。
- 一般可以是手动控制进行合并,防止出现在业务高峰期 。
- 当 Region 过大的时候,HBase 会拆分 Region 。
ConstantSizeRegionSplitPolicy:
0.94版本前默认切分策略 。
当Region大小大于某个阈值之后就会触发切分,一个Region等分为2个Region 。
- 在生产线上这种切分策略有相当大的弊端:切分策略对于大表和小表没有明显的区分 。
如果设置较小则对小表友好,但一个大表就会在整个集群产生大量的Region,这对于集群的管理、资源使用、Failover不好 。
IncreasingToUpperBoundRegionSplitPolicy:
0.94版本~2.0版本默认切分策略 。
总体看和ConstantSizeRegionSplitPolicy思路相同,一个Region大小大于设置阈值就会触发切分 。
- 但这个阈值并不是一个固定的值 。
- 而是会在一定条件下不断调整,调整规则和Region所属表在当前RegionServer上的Region个数有关系 。
- RegionCount^3 * 128M * 2,当Region达到该size的时候进行split 。
- 第一次split:1^3 * 256 = 256MB
- 第二次split:2^3 * 256 = 2048MB
- 第三次split:3^3 * 256 = 6912MB
- 第四次split:4^3 * 256 = 16384MB > 10GB,取较小的值10GB
SteppingSplitPolicy:
- 2.0版本默认切分策略 。
- 依然和待分裂Region所属表在当前RegionServer上的Region个数有关系 。
- 如果Region个数等于1,切分阈值为flush size * 2,否则为MaxRegionFileSize 。
推荐阅读
- steam怎么换区 steam两种转区方法介绍
- 郑梓妍扮演者是谁?郑梓妍扮演者钟晨瑶介绍
- 中秋节介绍 中秋节介绍英语作文
- 纸张种类 纸张种类大全介绍
- 水玻璃的特性及用途介绍 水玻璃的特性及用途
- 南京春节的风俗有哪些,南京人结婚风俗都有哪些介绍的详细些
- 电信星卡29元套餐介绍,电信星卡可以添加副卡
- 华为手表gt2功能介绍,华为手表gt2怎么设置
- 罗非鱼钓法介绍 罗非鱼如何钓
- Scylla数据库-高性能的分布式数据库
