Hbase性能优化百科全书
HBase简介
海量存储:HBase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与HBase的记忆扩展性息息相关。正是因为HBase的良好扩展性,才为海量数据的存储提供了便利。
列式存储:列式存储,HBase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定,而不用指定列。
极易扩展:HBase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储能力(HDFS)的扩展。
高并发:目前大部分使用HBase的架构,都是采用廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,HBase的单个IO延迟下降并不多。
稀疏:稀疏主要是针对HBase列的灵活性,在列族中,可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间。
表的设计之预分区优化
表的设计之rowkey优化
打散RowKey
加盐(salting)+哈希(hashing)
反转固定格式的数值
控制RowKey长度
保证RowKey唯一性
JVM调优
合理配置 JVM 内存
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms32g -Xmx32g"
选择合适的GC策略
ParallelGC 和 CMS 组合
G1
开启 MSLAB 功能
hbase.hregion.memstore.mslab.enabled:MSLAB 开关,默认为 true,即打开 MSLAB。
hbase.hregion.memstore.mslab.chunksize:每个 Chunk 的大 小,默认为 2MB,建议保持默认值。
hbase.hregion.memstore.chunkpool.maxsize:内部 Chunk Pool 功能,默认为 0 ,即关闭 Chunk Pool 功能。设置为大于 0 的值才能开启,取值范围为 [0,1],表示 Chunk Pool 占整个 MemStore 内存大小的比例。
hbase.hregion.memstore.chunkpool.initialsize:表示初始化时申请多少个 Chunk 放到 Chunk Pool 中,默认为 0,即初始化时不申请 Chuck,只在写入数据时才申请。
hbase.hregion.memstore.mslab.max.allocation:表示能放入 MSLAB 的最大单元格大小,默认为 256KB,超过该大小的数据将从 JVM 堆分配空间而不是 MSLAB。
考虑开启 BucketCache
hbase.bucketcache.ioengine:使用的存储介质,可设置为 heap、offheap 或 file,其中 heap 表示空间从JVM堆中申请,offheap 表示使用 DirectByteBuffer 技术实现堆外内存管理,file 表示使用类似 SSD 等存储介质缓存数据。默认值为空,即关闭 BucketCache,一般建议开启 BucketCache。此外,HBase 2.x 不再支持 heap 选型。
hbase.bucketcache.combinedcache.enabled:是否打开 CombinedBlockCache 组合模式,默认为 true。此外,HBase 2.x 不再支持该参数。
hbase.bucketcache.size:BucketCache 大小,取值有两种,一种是[0,1]之间的浮点数值,表示占总内存的百分比,另一种是大于1的值,表示占用内存大小,单位 MB。
合理配置读写缓存比例
读优化
HBase客户端优化
HBase服务器端优化
HBase列族设计优化
HDFS相关优化
HBase读性能优化归纳
写优化
其他
使用压缩
<name>hbase.regionserver.codecs</name>
<value>snappy,lzo</value>
</property>
create 'testtable',{NAME => 'colfam1',COMPRESSION => 'GZ'}
使用扫描缓存
限定扫描范围
关闭ResultScanner
参考文档
https://www.cnblogs.com/panfeng412
https://zhuanlan.zhihu.com/p/75630694
https://www.jianshu.com/p/77545e359e1e
https://blog.csdn.net/wsdc0521/article/details/108536492
https://blog.csdn.net/lw_ghy/article/details/60779222
https://blog.csdn.net/ourpush/article/details/53558292 https://blog.csdn.net/qq1010885678/article/details/51957401
HBase的系统架构全视角解读
设计HBase RowKey需要注意的二三事
Hbase FAQ热门问答小集合
版权声明:本文为大数据技术与架构原创整理,转载需作者授权。未经作者允许转载追究侵权责任。微信公众号|import_bigdata编辑 | 《大数据技术与架构》
欢迎点赞+收藏+转发朋友圈素质三连
文章不错?点个【在看】吧! 👇