168大数据

标题: HBase优化 [打印本页]

作者: 168主编    时间: 2020-4-4 19:27
标题: HBase优化
1、垃圾回收优化
使用CMS垃圾回收机制
2、启用压缩
GZIP、Snappy、LZO,推荐Snappy
3、MemStore缓存配置
<span]1、垃圾回收优化
使用CMS垃圾回收机制
2、启用压缩
GZIP、Snappy、LZO,推荐Snappy
3、MemStore缓存配置
<span]4、Region拆分和合并
预建分区,避免自动split,提高hbase响应速度
5、Region均衡
避免出现Region热点现象,按照table级别进行balance
6、尽量只用1-3个列族
定期建表,如每月中旬建立下一个月的表,表名中含有年月
RowKey设计
1、保证唯一性
2、长度越短越好(加快再内存缓存时进行检索的效率)
3、散列:(散列+时间戳]1、保证唯一性
2、长度越短越好(加快再内存缓存时进行检索的效率)
3、散列:(散列+时间戳]提前对表进行分区,防止Region Split
Region数量计算
确定按年/季/月建表,如果数据量特别大,不能只有1个表
确定HFile最大大小,例如10G
假设有1个列族,1个月的数据有5T
则需要5T/(10G * 1)=512个Region
预建分区可以多估一点,分裂时写入或查询数据很缓慢
预分区?
<span]预建分区可以多估一点,分裂时写入或查询数据很缓慢
预分区?
<span]在创建Hbase表的时候默认一张表只有一个region,所有的put操作都会往这一个region中填充数据,这时所有的负裁都在同一台机器上,当这个一个region过大时就会进行split。如果在创建hbase的时候就进行预分区则会减少当数据量猛增时由于region split带来的资源消耗。
HBase表的预分区需要紧密结合业务场景来选择分区的key值,每个region都有一个]HBase表的预分区需要紧密结合业务场景来选择分区的key值,每个region都有一个]创建预分区有两种方法
1:采用Hbase自带的RegionSplitter()工具,它会通过MDS法生成MDS校验和,以此作为region的开始键;
2:使用自定义分区算法进行预分区
列簇设计原则???
1:列簇不宜过多,1~3个。跨列簇查询效率低下。同一个列簇的数据放在一起的,因为flush和compact是以region为单位的。
2:列簇的名字不宜过长
3:将经常一起查询的列放在一个列簇中
<span]1:列簇不宜过多,1~3个。跨列簇查询效率低下。同一个列簇的数据放在一起的,因为flush和compact是以region为单位的。
2:列簇的名字不宜过长
3:将经常一起查询的列放在一个列簇中
<span]备注:因为列簇没有元数据的描述,所以想获取列簇的完整列名,则需要处理所有的行

作者:小小少年Boy
链接:https://www.jianshu.com/p/1a8820c0f5ca






欢迎光临 168大数据 (http://www.bi168.cn/) Powered by Discuz! X3.2