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

    高可用

    在HBase中HMaster负责监控HRegionServer的生命周期,均衡RegionServer的负载,如果HMaster挂掉了,整个HBase集群就出问题了,所以HBase支持对HMaster的高可用配置。

    高可用配置是为了解决主从架构的单点失效故障问题。所以要对Master进行一个热备。

    如何配置,到时候自己搜索一下。

    预分区

    每一个Region都维护着StartRow到EndRow之间的数据,如果加入的数据符合某个Region维护的RowKey范围,则该数据交给这个Region。依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高HBase性能。

    使用JavaAPI创建预分区
    //自定义算法,产生一系列 hash 散列值存储在二维数组中
    byte[][] splitKeys = 某个散列值函数
    //创建 HbaseAdmin 实例
    HBaseAdmin hAdmin = new HBaseAdmin(HbaseConfiguration.create());
    //创建 HTableDescriptor 实例
    HTableDescriptor tableDesc = new HTableDescriptor(tableName);
    //通过 HTableDescriptor 实例和散列值二维数组创建带有预分区的 Hbase 表
    hAdmin.createTable(tableDesc, splitKeys);
    

    RowKey设计

    数据存储在哪个分区,取决于RowKey处于哪个预分区的区间内,设计RowKey的主要目的,就是让数据均匀的分布于所有的region中,在一定程度上防止数据倾斜。

    生成随机数、hash、散列值

    将原先的RowKey哈希成随机数,以均分分布,防止数据倾斜

    字符串反转

    2020变成0202,一定程度上,也是生成一个随机数,用于均匀分布

    字符串拼接

    将要排列的数据加入RowKey

    内存优化

    HBase操作过程中需要大量的内存开销,一般会分配整个可用内存的70%给HBase的Java堆。

    基础优化

    1. 允许在HDFS的文件中追加内容,开启append
    2. 优化DataNode允许的最大文件打开数,HBase一般会同一时间操作大量文件
    3. 优化延迟高的数据操作的等待时间
    4. 优化数据的写入效率,提高文件的写入效率,减少写入时间
    5. 设置RPC监听数量
    6. 优化HStore大小
    7. 优化HBase客户端缓存,增大该值可以减少RPC调用次数,会消耗更多内存
    8. 指定scan扫描HBase获取的行数
    9. flush、compact、split机制

    当MemStore达到阈值,将数据Flush进StoreFile,compact机制把小文件合并成大文件,split则是当Region达到阈值,一分为二

  • 相关阅读:
    Fedora 19 配置参考
    Lua 函数、闭包、尾调用总结
    基于MFC简单图片裁剪工具
    【OpenGL 学习笔记04】顶点数组
    【OpenGL 学习笔记03】点画多边形
    【OpenGL 学习笔记02】宽点画线
    【OpenGL 学习笔记01】HelloWorld示例
    【SSH + BootStrap】实现的无线点餐系统
    【C++ 基础 11】 函数指针总结
    【C++基础 10】四种cast转换的区别
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12493635.html
Copyright © 2011-2022 走看看