提前生成Hbase预分区种子,在创建Hbase表时也进行相应的预分区,同时设置预分区的个数,预分区的范围对应Hbase监控页面的Region Server的start key与End key,从而使数据能够均匀的分布于各个Region中.给捷哥赞一个~

private static final String[] PARTITIONS = generatPartitionSeed();

//生成3844个分区种子
public static String[] generatPartitionSeed(){
List<Character>seeds = List.newArrayList();
for(int i='0';i<='9';i++){
seeds.add((char) i);
}
for(int i = 'A';i<='Z';i++){
seeds.add((char) i);
}
for(int i = 'a';i<='z';i++){
seeds.add((char) i);
}
int k = 0;
//获得总共的分区个数
String[] partions = new String[seeds.size()*seeds.get(j));
for(int i =0;i<seeds.size();i++){
for(int j=0;j<seeds.size();j++){
//两两组合成为分区start key
partions[k] = StringUtil.join(seeds.get(i),seeds.get(j));
k++;
}
}
return partions;
} //按指定数量生成分区种子
public static String[] generatPartitionSeed(int limit){
int size = PARTITIONS.length;
int[] space = new int[limit];
for(int pt = 0;pt<size;){
for(int j=0;j<space.length;j++){
++space[j];
pt++;
if(pt == size){
break;
}
}
}
String[] seed = new String[limit+1];
int position = 0;
for(int i =0;i<space.length;i++){
seed[i] = PARTITIONS[position];
position += space[i];
}
seed[seed.length -1] = PARTITIONS[PARTITIONS.length -1];
return seed;
} //生成后的rowkey
public static String generatRow(String str){
int i = Math.abs(str.hashCode() % PARTITION.length);
return StringUtils.join(PARTITIONS[i],"-",str);
} public static void main(String[] args){
String[] arr = generatPartitionSeed(100);
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
}

Hbase预分区种子生成的更多相关文章

  1. HBase预分区

    seq 0 7 | awk '{printf("\\x%02x\\x%02x\n", $1/256, $1%256);}' | sort -R |head -3 create 'm ...

  2. 大数据量场景下storm自定义分组与Hbase预分区完美结合大幅度节省内存空间

    前言:在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分 ...

  3. hbase 预分区与自动分区

    我们知道,HBASE在创建表的时候,会自动为表分配一个Region,当一个Region过大达到默认的阈值时(默认10GB大小),HBase中该Region将会进行split,分裂为2个Region,以 ...

  4. storm自定义分组与Hbase预分区结合节省内存消耗

    Hbas预分区 在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗. ...

  5. hbase 预分区

    转载 http://www.cnblogs.com/bdifn/p/3801737.html

  6. HBase 热点问题——rowkey散列和预分区设计

    热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作).大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响 ...

  7. HBase Rowkey的散列与预分区设计

    转自:http://www.cnblogs.com/bdifn/p/3801737.html 问题导读:1.如何防止热点?2.如何预分区?扩展:为什么会产生热点存储? HBase中,表会被划分为1.. ...

  8. rowkey散列和预分区设计解决hbase热点问题(数据倾斜)

    Hbase的表会被划分为1....n个Region,被托管在RegionServer中.Region二个重要的属性:Startkey与EndKey表示这个Region维护的rowkey的范围,当我们要 ...

  9. 【HBase】带你了解一哈HBase的各种预分区

    目录 简单了解 概述 设置预分区 一.手动指定预分区 二.使用16进制算法生成预分区 三.将分区规则写在文本文件中 四.使用JavaAPI进行预分区 简单了解 概述 由上图可以看出,每一个表都有属于自 ...

随机推荐

  1. CentOS7下安装MYSQL5.7

    第一种方式:yum安装 1.下载mysql57-community-release-el7-9.noarch 下载地址:http://dev.mysql.com/downloads/repo/yum/

  2. [转]为什么不能用memcached存储Session

    以下内容转自:http://www.infoq.com/cn/news/2015/01/memcached-store-session -------------------------分割线---- ...

  3. easyui treegrid 分页

    $(function () { $('#maintable').treegrid({ width: '98%', height: 550, nowrap: true, striped: true, f ...

  4. C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置

    官方文档是微信JS-SDK的使用步骤http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...

  5. @HTML.checkboxFor()用法

    <%=Html.CheckBox("chk1",true) %> <%=Html.CheckBox("chk1", new { @class= ...

  6. 必备技能:分清楚DOM的attribute和property

    分清楚DOM的attribute和property,用JQ的时候分清楚attr,和prop方法,网上有很多大神的总结,我就不列举了.

  7. Oracle中TO_DATE用法

    TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyy ...

  8. Node.js 全局对象

    JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量. 在浏览器JavaScript 中,通常window 是全 ...

  9. 设计模式之二:MVC

    模型(Model) 视图(View) 控制器(Controller) (MVC) 是 Cocoa 中的一种行为模块,并且也是所有 Cocoa 设计模式中使用最多的.在程序中按照它们的角色来分类这些对象 ...

  10. Python的平凡之路(11)

    一. rabbitmq 1 进程Queue:  父进程与子进程进行交互,或者同属于同一父进程下多个子进程进行交互 2 队列通信:   send1.py #!/usr/bin/env python#Au ...