提前生成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. BFC 神奇背后的原理

    BFC已经是一个耳听熟闻的词语了,网上有许多关于BFC的文章,介绍了如何触发BFC, 以及BFC的一些用处(如清浮动,防止margin重叠等).虽然我知道如何利用BFC解决这些问题,但当别人问我BFC ...

  2. jQuery:常用方法一览

    Attribute:$(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给 ...

  3. Spring控制多张表的提交事务操作

    一.Spring配置文件如下: <bean id="test" class="org.apache.commons.dbcp.BasicDataSource&quo ...

  4. Servlet实现文件,图片等的下载 含代码

    实现文件的下载源代码如下: package com.fxl.servlet; import java.io.FileInputStream;import java.io.IOException;imp ...

  5. ABAP遇到的问题——1

    在创建ABAP对象的时候抛出“测试对象不能被创建在外来命名空间”的错误 原因:程序的名字不是以Z或者Y开头的.

  6. Get请求编码

    遇到get请求中文编码的时候,有的人会采用在Tomcat/conf/server.xml中的如下添加一句: <Connector port="8080" protocol=& ...

  7. char*或string转换成LPCWSTR

    VS2010默认是Unicode的,在VC 6.0中编译成功的项目在VS2010中常会出现类型错误. 经常出现的错误是:不能从const char *转换为LPCWSTR 如使用CreateDC(&q ...

  8. 【three.js详解之二】渲染器篇

    [three.js详解之二]渲染器篇   本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...

  9. Linux的yum源的配置

    yum实际上是管理的rpm软件包 只要连接网络就可以使用在线的yum源,不用配置本地yum源 网络yum源/etc/yum.repos.d/fedora.repo(Fedora)[fedora]nam ...

  10. POJ 1236 SCC+缩点

    题意:一张有向图,一问至少给几个点发送软件,才能让所有点都能收到软件:二问是至少添加几条边才能让整个图是一个连通分量: 分析:一般求连通分量都会求缩点,在这里缩点之后,生成一张新的图,在新的图中求每一 ...