zoukankan      html  css  js  c++  java
  • HBase优化

    高可用

    保证HMaster存在
    1.在hbase/conf目录下创建backup-masters文件

    touch conf/backup-masters
    

    2.在backup-masters文件中配置高可用的HMaster节点

    echo hostname > conf/backup-masters
    

    3.将整个conf目录传输到其他节点

    预分区

    每一个region维护着StartRow与EndRow,如果加入的数据符合某个Region维护的RowKey范围,则该数据交给这个Region维护。因此,可以将数据所要投放的分区提前大致的规划好,以提高HBase性能。

    1.手动设置

    create 'tablename','ColumnFamily1','ColumnFamily2',...,SPLITS => ['1000','2000','3000','4000']
    

    2.生成16进制序列预分区

    create 'tablename','ColumnFamily1','ColumnFamily2',...,{NUMRGIONS => 15,SPLITALGO => 'HexStringSplit'}
    

    3.按照恩建中设置的规则预分区
    创建splits.txt:
    aaa bbb ccc ddd

    create 'tablename','ColumnFamily1','ColumnFamily2',...,SPLITS_FILE => 'splits.txt'
    

    4.使用javaAPI预分区

    RowKey设计

    目的是让数据均匀分布在所有的region中,在一定程度上防止数据倾斜
    1.生成随机数、hash、散列值
    2.字符串反转
    3.字符串拼接

    内存优化

    一般会分配可用内存的70%给HBase的java堆,但是不建议分配非常大的堆内存,因为gc过程会持续太久导致RegionServer处于长期不可用状态,一般16-48G,如果因框架占用内存过高导致系统内存不足,框架运行速度一样会十分慢

    基础优化

    1.允许在hdfs的文件追加内容

    hdfs-site.xml,hbase-site.xml
    dfs.support.append  #默认值为true
    

    2.优化DataNode允许的最大文件打开数

    hdfs-site.xml
    dfs.datanode.max.transfer.threads #默认值为4096
    

    3.优化延迟高的数据操作的等待时间

    hdfs-site.xml
    dfs.image.transfer.timeout #默认值60000ms
    

    4.优化数据的写入效率

    mapred-site.xml
    mapreduce.map.output.compress
    mapreduce.map.output.compress.codec
    

    5.设置RPC监听数量

    hbase-site.xml
    Hbase.regionserver.handler.count  #默认值 30
    

    6.优化HStore文件大小

    hbase-site.xml
    Hbase.hregion.max.filesize #默认值10737418240(10GB)
    

    7.优化Hbase客户端缓存

    hbase-site.xml
    hbase.client.write.buffer #增大该值可以减少RPC调用次数,但是会消耗更多内存
    

    8.指定scan.next扫描Hbase所获取的行数

    hbase-site.xml
    hbase.client.scanner.caching
    

    9.flush、compact、split机制

  • 相关阅读:
    随机色块
    JQ命令汇总
    JQ选择器
    cookie
    tab切换
    Ajax跨域
    RocksDB介绍:一个比LevelDB更彪悍的引擎
    谷歌的诀窍:如何取消验证码
    Ruby on Rails创始人DHH谈如何进行混合移动APP开发
    SequoiaDB 架构指南
  • 原文地址:https://www.cnblogs.com/zqzhen/p/12853922.html
Copyright © 2011-2022 走看看