Hbase存储要点:
1、三维有序
rowkey排序、列簇类有序、时间戳倒序
2、行分割
在行的方向上进行分割
将一定的行放在同一个region,随着行的增多,会进行拆分,并将region分布到各个HRegionServer中
3、分布式存储单位
HRegion是分布式存储和负载均衡最小单位,不同的HRegion可以分配到不同的HRegionServer
4、存储单位
HRegion由一个或者多个Store组成,每个Store保存一个columns family,每个store又由一个memStore和0至多个StoreFile组成,
Storefile以HFile格式保存在HDFS上
5、行级锁
在单行上加锁,具备强一致性
6、支持mapreduce直接操作
7、Hbase访问
旧版本(新版本直接删除掉了root表,直接有zookeeper找到meta信息)
1).Meta记录用户表region信息,.Meta可以有多个region
--Rowkey:Region的name,其中包含了表名等信息
--Column Family:info, 包含了如下三列:regioninfo,server和serverstartcode。 其中 regioninfo包含了 NAME, STARTKEY, ENDKEY 等信息
2)-ROOT表记录.Meta表的region信息,-Root只有一个region,zookeeper记录-ROOT表的location信息
当用户表非常大的时候,.META.的region也会不断增加,HBase引入了第二张特殊表-ROOT-,用来记录.META.的Region信息。-ROOT-表的结构与.META.的结构一样
8、读取
扫描顺序(Region):BlockCache(读缓存)、MemStore(写缓存)、StoreFile(HFile)
gc调优简要:
-XX:CMSInitiatingOccupancyFraction=70 老年代70%开始回收
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseConcMarkSweepGC:设置年老代为并发收集
-Xmx16G -Xms16G:-Xms、-Xmx 相等以避免在GC 后调整堆的大小。
-Xmn1G:指定New Generation的大小, Yong区设置过大GC时间长。
-XX:SurvivorRatio=8 Eden:Survivor=8:1
-XX:+UseParNewGC:设置年轻代为并发收集。
-XX:CMSFullGCsBeforeCompaction=0这个参数,指定进行多少次full GC之后,进行内存空间压缩,0是每次都会。
-XX:+UseCMSCompactAtFullCollection设置在FULL GC的时候,对年老代的压缩;CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。可能会影响性能,但是可以消除碎片
hbase_heapsize ------>>>>堆内存以及堆外内存的分配
写多读少内存占比(30读70写):memstore 0.4 lRUBlockCache 0.25
读多写少:jvm内存和堆外内存,由lRUBlockCache+BucketCache构成读缓存CombinedBlockCache
lru用户缓存元数据Block,BucketCache用于缓存实际用户数据Block
jvm_heap=rs总内存-堆外内存
图解:
序号 | 步骤 | 原理 | 计算公式 | 计算值 | 修正值 |
A | 规划RS总内存 | 在系统内存允许且不影响其他服务的情况下,越多越好。设置为系统总内存的 2/3。 | 2/3 * 96G | 64G | 64G |
B | 规划读缓存 CombinedBlockCache | 整个RS内存分为三部分:读缓存、写缓存、其他。基本按照5 : 4 : 1的分配原则。读缓存设置为整个RS内存的50% | A * 50% | 32G | 26G |
B1 | 规划读缓存LRU部分 | LRU部分主要缓存数据块元数据,数据量相对较小。设置为整个读缓存的10% | B * 10% | 3.2G | 3G |
B2 | 规划读缓存BucketCache部分 | BucketCache部分主要缓存用户数据块,数据量相对较大。设置为整个读缓存的90% | B * 90% | 28.8G | 24G |
C | 规划写缓存MemStore | 整个RS内存分为三部分:读缓存、写缓存、其他。基本按照5:4:1的分配原则。写缓存设置为整个RS内存的40% | A * 40% | 25.6G | 25G |
D | 设置JVM_HEAP | RS总内存大小 – 堆外内存大小 | A – B2 | 35.2G | 40G |