zoukankan      html  css  js  c++  java
  • Hbase预分区

    HBase的预分区

    1、为何要预分区?

    • 增加数据读写效率
    • 负载均衡,防止数据倾斜
    • 方便集群容灾调度region
    • 优化Map数量

    2、如何预分区?

    每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。

    3、如何设定预分区?

    3.1、手动指定预分区

    create 'staff','info','partition1',SPLITS => ['1000','2000','3000','4000']

    完成后如图:

     

    3.2、使用16进制算法生成预分区

    create 'staff2','info','partition2',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}

    完成后如图:

     

    3.3、分区规则创建于文件中

    创建splits.txt文件内容如下:

    aaaa
    bbbb
    cccc
    dddd

    然后执行:

    create 'table2','partition2',SPLITS_FILE => 'splits.txt'

    成功后如图:

     

    3.4、使用JavaAPI创建预分区

    Java代码如下:

    //自定义算法,产生一系列Hash散列值存储在二维数组中
    
    byte[][] splitKeys = 某个散列值函数
    
    //创建HBaseAdmin实例
    
    HBaseAdmin hAdmin = new HBaseAdmin(HBaseConfiguration.create());
    
    //创建HTableDescriptor实例
    
    HTableDescriptor tableDesc = new HTableDescriptor(tableName);
    
    //通过HTableDescriptor实例和散列值二维数组创建带有预分区的HBase表
    
    hAdmin.createTable(tableDesc, splitKeys);
  • 相关阅读:
    python set
    python中%d %2d %02d %-2d% %.2d的区别
    python dict(字典)
    python 300本电子书合集
    python tuple元组
    python end用法
    python 找出第二大值
    GPU大百科全书 第二章 凝固生命的光栅化
    GPU大百科全书 第一章:美女 方程与几何
    Notepad++中调试用心lua程序
  • 原文地址:https://www.cnblogs.com/alexzhang92/p/10941000.html
Copyright © 2011-2022 走看看