> 데이터 베이스 > MySQL 튜토리얼 > HBase集群RS扩容性能验证Rowkey构建方法

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

WBOY
풀어 주다: 2016-06-07 17:27:00
원래의
1091명이 탐색했습니다.

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

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 list = new ArrayList();
  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    for (long i = 0; i     for (int j = 0; j      //A-Z使用同一个数值
     addition = j % REGION_NUMS;
     str = num2ABC(addition);
     //构建本条记录字符串
     System.out.println(str + curNum);
     list.add(str);
    }
    curNum++; //一次循环后当前尾数+1
   }
   // TODO: 执行一次put
   System.out.println("put");
   list.clear();
  }
 
  // 处理循环外的,肯定小于EACH_PUT_NUMS,,最后一次put操作
  long lastNums = TOTAL_NUMS % EACH_PUT_NUMS; //还剩多少记录要put
  long lastloops = lastNums / REGION_NUMS; //curNum还要自增多少
  long numPlus = lastNums % REGION_NUMS;  //最后额外补充多少条记录
  for (long i = 0; i    for (int j = 0; 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    //A-Z使用同一个数值
   addition = j % REGION_NUMS;
   str = num2ABC(addition);
   //构建本条记录字符串
   System.out.println(str + curNum);
   list.add(str);
  }
  // TODO: 执行一次put
  System.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();
 }
}

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿