一:hbase现有硬件资源的理论性能
1.集群容量规划公式:
优化调整,发挥硬件的最大优势;
Disk Size / Java Heap=RegionSize / MemstoreSize * ReplicationFactor * HeapFractionForMemstore *2
按照默认配置,
- RegionSize = 10G,对应参数为hbase.hregion.max.filesize;
- MemstoreSize = 128M,对应参数为hbase.hregion.memstore.flush.size;
- ReplicationFactor = 3,对应参数为dfs.replication;
- HeapFractionForMemstore = 0.4,对应参数为hbase.regionserver.global.memstore.lowerLimit;
推导公式;
- 硬盘容量纬度下Region个数:
Disk Size / (RegionSize * ReplicationFactor) - Java Heap纬度下Region个数:
Java Heap * HeapFractionForMemstore / (MemstoreSize / 2 )
Disk Size / (RegionSize * ReplicationFactor) = Java Heap * HeapFractionForMemstore / (MemstoreSize / 2 )
=> Disk Size / Java Heap = RegionSize / MemstoreSize * ReplicationFactor * HeapFractionForMemstore * 2
2.hbase对于cpu要求高,越多core越好
3.软硬件独立的hbase集群
其他硬件配置,
- 集群使用万兆网卡(千兆对于大数据集群来说实在太小,很容易打满,影响较大),
- 磁盘尽可能大,
- 内存不用太高,一般128G就已经特别多了HBase本身对内存的需求并不是配的越大越好。
- CPU核数越多越好,HBase本身压缩数据、compaction线程等都是很吃CPU资源的。
二:hbase现集群调优参数
属 性 值 | cdh集群现有 | 集群效果 |
---|---|---|
hbase.hstore.blockingStoreFiles | 100 | HStore的storeFile的文件数大于配置值, |
则在flush memstore前先进行split或者compact, | ||
除非超过 | ||
hbase.hstore.blockingWaitTime配置的时间, | ||
默认为7,可调大,比如:100, | ||
避免memstore不及时flush,当写入量大时, | ||
触发memstore的block,从而阻塞写操作。 | ||
cachecompress | FALSE | 开启cache的压缩, |
50% increase in throughput | ||
and 30% improvement in mean latency while, | ||
increasing garbage collection by 80% | ||
and increasing overall CPU load by 2% | ||
hbase.regionserver.thread.compaction.small | 5 | 压缩的线程数,增加压缩性能。 |
hbase.hregion.memstore.flush.size | 256 | 当前系统flush比较频繁,并且内存资源比较充足, |
可以适当将该值调整为256M。避免频繁的flush | ||
hbase.hstore.compactionThreshold | 5 | 有五个store file就触发compact操作, |
减少压缩队列。 | ||
HBase HRegion 最大化压缩 | 0 | 禁止自动大合并(时间长,耗费资源), |
hbase.hregion.majorcompaction | 业务低峰期进行手动合并。 | |
GC-region server配置(JDK1.7) | -XX:+UseG1GC | G1日志打印: |
-XX:MaxGCPauseMillis=100 | -verbose:gc | |
-XX:InitiatingHeapOccupancyPercent=70 | -XX:+PrintGC | |
-XX:G1HeapRegionSize=16m | -XX:+PrintGCDetails | |
-XX:+ParallelRefProcEnabled | -XX:+PrintGCApplicationStoppedTime | |
-XX:+UnlockExperimentalVMOptions | -XX:+PrintHeapAtGC | |
-XX:-ResizePLAB | -XX:+PrintGCDateStamps | |
-XX:+PrintAdaptiveSizePolicy | ||
-XX:+PrintTenuringDistribution | ||
-XX:+ |