• 大数据学习之Hbase优化方案30


    10:Hbase­优化方案

    1预分区设计

    真正存储数据的是region要维护一个区间段的rowkey

    startRow~endRowkey

    -》手动设置预分区

    create 'user_p','info','partition',SPLITS => ['101','102','103','104']

    存在-∞ +∞

    第一个分区 -∞ ~ 101

    第二个分区 101~102

    第三个分区 102~103

    第四个分区 103~104

    第五个分区 104 ~ +∞

    -》生成16进制序列预分区 (15个分区)

    create 'user_p2','info','partition',{NUMREGIONS => 15,SPLITALGO => 'HexSt

    ringSplit'}

    -》按照文件中设置的规则设置预分区(注意,文件是在hbase目录下的)

    create 'user_p4','partition',SPLITS_FILE => 'splits.txt'

    2rowkey设计

    一条数据的唯一标识是rowkey,rowkey存储在哪个分区取决于

    属于哪个预分区内。

    为什么要设计rowkey?数据倾斜

    为了防止出现数据倾斜

    1)生成随机数/hash/散列值

    例如:rowkey101 变成:dd21231dqwdqd123131d112131

    102 变成:wqdqdq212131dqdwqwdqdw1d21

    (2)字符串反转

    2018120800011 1100080218102

    2018120800012 2100080218102

    3)字符串拼接

    2018120800011_a12e

    2018120800012_odd12c

    101~105 105~100000

    总结:尽可能的使每个rowkey随机分布在各个region

    3hbase优化

    1)内存优化

    一般分配70%内存给Hbasejava

    不建议分配非常大的堆内存

    一般设置为 16~48G内存即可

    设置:export HADOOP_PORTMAP_OPTS="-Xmx512m $HADOOP_PORTMAP_OPTS"

    注意:etc/hadoophadoop-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

    调小

    我们已经学了的知识:

    linux/hdfs/mr/zookeeper/hive/flume/sqoop/azkaban/hbase   坚持!!!!

  • 相关阅读:
    Spring总结九:事务管理机制
    Spring总结七:AOP动态代理的实现
    Spring总结六:AOP(面向切面编程)
    Nginx静态网站的部署
    Spring总结五:小结 使用spring访问servlet
    javascript 的dateObj.getTime() 在为C#的获取方式
    操作JavaScript数组
    判断是否是对象的原型
    JavaScript判断对象 是什么类型的.
    Javascript中类型: undefined, number ,string ,object ,boolean
  • 原文地址:https://www.cnblogs.com/hidamowang/p/10960618.html
Copyright © 2020-2023  润新知