码迷,mamicode.com
首页 > 其他好文 > 详细

Hbase­优化方案

时间:2018-12-15 23:56:29      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:ado   优化方案   10gb   datanode   时间   class   node   site   codec   

1、预分区设计

    真正存储数据的是region要维护一个区间段的rowkey      startRow~endRowkey
    
    -》手动设置预分区
    create ‘user_p‘,‘info‘,‘partition‘,SPLITS => [‘101‘,‘102‘,‘103‘,‘104‘]
    存在-∞ +∞
    第一个分区 -∞ ~ 101
    第二个分区 101~102
    第三个分区 102~103
    第四个分区 103~104
    第五个分区 104 ~ +∞
    
    -》生成16进制序列预分区
    create ‘user_p2‘,‘info‘,‘partition‘,{NUMREGIONS => 15,SPLITALGO => ‘HexStringSplit‘}
    
    -》按照文件中设置的规则设置预分区
    create ‘user_p4‘,‘partition‘,SPLITS_FILE => ‘splits.txt‘

附:splits.txt

a1
b2
c3
d4

2、rowkey设计

    一条数据的唯一标识是rowkey,此rowkey存储在哪个分区取决于属于哪个预分区内。
    为什么要设计rowkey?数据倾斜
    为了防止出现数据倾斜
    (1)生成随机数/hash/散列值
    例如:rowkey是101 变成:dd21231dqwdqd123131d112131
    102 变成:wqdqdq212131dqdwqwdqdw1d21
    
    (2)字符串反转
    2018120800011 1100080218102
    2018120800012 2100080218102
    
    (3)字符串拼接
    2018120800011_a12e
    2018120800012_odd12c
    101~105 105~100000

3、HBase优化

    (1)内存优化
    一般分配70%内存给Hbase的java堆
    不建议分配非常大的堆内存
    一般设置为 16~48G内存即可
    设置:export HADOOP_PORTMAP_OPTS="-Xmx512m $HADOOP_PORTMAP_OPTS"
    注意:etc/hadoop下 hadoop-env.sh
    
    (2)基础优化
    -》优化DataNode
    最大文件打开数
    hdfs-site.xml
    属性:dfs.datanode.max.transfer.threads
    默认值:4096 设置大于4096
    
    -》优化延迟高的数据操作等待时间
    hdfs-site.xml
    属性:dfs.image.transfer.timeout
    默认:60000毫秒
    调大
    
    -》数据写入效率
    压缩
    属性:mapreduce.map.output.compress
    值:org.apache.hadoop.io.compress.GzipCodec
    
    -》优化Hstore的文件大小
    属性:hbase.hregion.max.filesize
    默认值:10GB
    调小

 

Hbase­优化方案

标签:ado   优化方案   10gb   datanode   时间   class   node   site   codec   

原文地址:https://www.cnblogs.com/areyouready/p/10125388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!