Hbase预分区种子生成
提前生成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预分区种子生成的更多相关文章
- HBase预分区
seq 0 7 | awk '{printf("\\x%02x\\x%02x\n", $1/256, $1%256);}' | sort -R |head -3 create 'm ...
- 大数据量场景下storm自定义分组与Hbase预分区完美结合大幅度节省内存空间
前言:在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分 ...
- hbase 预分区与自动分区
我们知道,HBASE在创建表的时候,会自动为表分配一个Region,当一个Region过大达到默认的阈值时(默认10GB大小),HBase中该Region将会进行split,分裂为2个Region,以 ...
- storm自定义分组与Hbase预分区结合节省内存消耗
Hbas预分区 在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗. ...
- hbase 预分区
转载 http://www.cnblogs.com/bdifn/p/3801737.html
- HBase 热点问题——rowkey散列和预分区设计
热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作).大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响 ...
- HBase Rowkey的散列与预分区设计
转自:http://www.cnblogs.com/bdifn/p/3801737.html 问题导读:1.如何防止热点?2.如何预分区?扩展:为什么会产生热点存储? HBase中,表会被划分为1.. ...
- rowkey散列和预分区设计解决hbase热点问题(数据倾斜)
Hbase的表会被划分为1....n个Region,被托管在RegionServer中.Region二个重要的属性:Startkey与EndKey表示这个Region维护的rowkey的范围,当我们要 ...
- 【HBase】带你了解一哈HBase的各种预分区
目录 简单了解 概述 设置预分区 一.手动指定预分区 二.使用16进制算法生成预分区 三.将分区规则写在文本文件中 四.使用JavaAPI进行预分区 简单了解 概述 由上图可以看出,每一个表都有属于自 ...
随机推荐
- 转-浅谈HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- scp不可用:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! After doing ssh are you seeing this error.No proble ...
- new对象时,类名后加括号与不加括号的区别
[1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...
- OC中快速创建NSNumber NSDictionary NSArray的方法
NSNumber: @() @小括号 或者 NSNumber * num = @3; NSValue * value = @4; NSDictionary :@{} @大括 ...
- 修改input的type属性
在ff和chrome中是可以直接修改input的type属性的,但是在ie下面是不允许的. 用jquery 的attr方法去修改,在jquery1.8.3版本会直接抛出异常,但在1.9及以上版本就不再 ...
- qgroundcontrol开发环境搭建源码编译
qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...
- 【第一篇】Android环境搭建
安装不易,且安且珍惜! 1 下载 Java JDK (http://java.sun.com/javae/downloads/ ) (Windows 版) [配置环境变量]:安装完成后,设置JAVA_ ...
- Maven安装本地jar
应用场景: 有时候一些jar包(比如oracle 的 ojdbc.jar)由于种种原因,比如版权等,导致maven中央库没有该jar文件,但是却有该jar的pom文件. 这个时候,如果私服也没这jar ...
- 域环境下装SQL SERVER的一次惨痛经历
SQL SERVER 2008 R2 其实sql server不建议装在域环境下的,但sharepoint必须用域用户来连接.这本来也不是个什么大问题,但是,这一次相当的不顺利哦. 我有单独的域控,单 ...
- SQLServer数据库表架构和数据保存成sql文件
一.先在你的mssql数据库中点击“数据库–>任务–>生成脚本” 二.然后我们会看到有“生成和发布脚本”窗口 下一步 三.选择要编写脚本的数据库对象,全部导出选第一个,如果你想导出部分数据 ...