马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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]备注:因为列簇没有元数据的描述,所以想获取列簇的完整列名,则需要处理所有的行
|