HBase集群RS扩容性能验证Rowkey构建方法

来源:互联网 发布:php 报名缴费 源码 编辑:程序博客网 时间:2024/06/07 06:30

RegionServer节点扩展后,需要将一部分原有Region迁移到新的RegionServer中,使各RegionServer负载均衡。

为了验证多了一个节点后的HBase的写性能提升,需要使每次put时List中的RowKey平均分配到现有的所有Region中,以达到使所有RegionServer并发处理的目的。

下面的代码是这种均匀RowKey构建的元代码:

import java.util.ArrayList;import java.util.List;public class externTest {public static long TOTAL_NUMS = 145;public static int REGION_NUMS = 24;public static long EACH_PUT_NUMS = 48;public static void buildString() {int addition = 0;String str = null;List<String> list = new ArrayList<String>();long curNum = 0;long putNums = TOTAL_NUMS/EACH_PUT_NUMS;//通常等于总put数-1;long loopsInOnePut = EACH_PUT_NUMS/REGION_NUMS;//一次put所需的内层循环数,也即是curNum自增数// 处理循环内的for (long k = 0; k < putNums; k++) {for (long i = 0; i < loopsInOnePut; i++) {for (int j = 0; j < REGION_NUMS; j++) {//A-Z使用同一个数值addition = j % REGION_NUMS;str = num2ABC(addition);//构建本条记录字符串System.out.println(str + curNum);list.add(str);}curNum++;//一次循环后当前尾数+1}// TODO: 执行一次putSystem.out.println("put");list.clear();}// 处理循环外的,肯定小于EACH_PUT_NUMS,最后一次put操作long lastNums = TOTAL_NUMS % EACH_PUT_NUMS;//还剩多少记录要putlong lastloops = lastNums / REGION_NUMS;//curNum还要自增多少long numPlus = lastNums % REGION_NUMS;//最后额外补充多少条记录for (long i = 0; i < lastloops; i++) {for (int j = 0; j < REGION_NUMS; j++) {//A-Z使用同一个数值addition = j % REGION_NUMS;str = num2ABC(addition);//构建本条记录字符串System.out.println(str + curNum);list.add(str);}curNum++;//一次循环后当前尾数+1}// 将循环外for (int j = 0; j < numPlus; j++) {//A-Z使用同一个数值addition = j % REGION_NUMS;str = num2ABC(addition);//构建本条记录字符串System.out.println(str + curNum);list.add(str);}// TODO: 执行一次putSystem.out.println("put");list.clear();return;}public static String num2ABC(int num) {String str = null;switch (num) {case 0:str = new String("A");break;case 1:str = new String("B");break;case 2:str = new String("C");break;case 3:str = new String("D");break;case 4:str = new String("E");break;case 5:str = new String("F");break;case 6:str = new String("G");break;case 7:str = new String("H");break;case 8:str = new String("I");break;case 9:str = new String("J");break;case 10:str = new String("K");break;case 11:str = new String("L");break;case 12:str = new String("M");break;case 13:str = new String("N");break;case 14:str = new String("O");break;case 15:str = new String("P");break;case 16:str = new String("Q");break;case 17:str = new String("R");break;case 18:str = new String("S");break;case 19:str = new String("T");break;case 20:str = new String("U");break;case 21:str = new String("V");break;case 22:str = new String("W");break;case 23:str = new String("X");break;default:str = new String("Z");break;}return str;}/** * @param args */public static void main(String[] args) {System.out.println("Test my Java!");buildString();}}

Author:Pirate Leo

myBlog: http://blog.csdn.net/pirateleo/

myEmail: codeevoship@gmail.com

转载请注明出处,谢谢。



原创粉丝点击