2012-06-26 3 views
5

내 HBase 클러스터의 부하가 불균형으로로드되어 있으므로 한 영역 서버의 테이블 영역을 다른 영역 서버로 옮기고 싶지만 regionserver의 시작 코드가 필요합니다. 어떻게이 시작 코드를 얻을 수 있습니까? other's master-status pageHBase 클러스터에서 영역 서버의 시작 코드를 얻는 방법은 무엇입니까?

하지만 광산이처럼 : my master-status page

어디 내가 시작 코드를 얻을 수

내가 누군가의 마스터 상태 페이지는 다음과 같은 것을 발견?

사실, 난 K2를 regionserver하는 regionserver의 K3에서 영역을 이동하려는, 그리고 K3의 지역은 :이 어떻게 할 수 regions on k3

? 자세히 :)

답변

7

좋아, 마침내 나는 그것을 해결했다.

/* 
* Copyright: Copyright (c) 2012 Kaliumn 
* 
* @Description: get regionservers' startcode in a hbase cluster 
* 
*/ 

package test.hbase; 

import java.util.Collection; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.hbase.HServerInfo; 
import org.apache.hadoop.hbase.MasterNotRunningException; 
import org.apache.hadoop.hbase.ServerName; 
import org.apache.hadoop.hbase.ZooKeeperConnectionException; 
import org.apache.hadoop.hbase.client.HBaseAdmin; 
import org.apache.hadoop.hbase.ipc.HMasterInterface; 
import org.gfg.kalium.server.hbaseutil.HConfUtils; 

/** 
* class <code> GetStartcode </code> is used to get regionservers' startcode 
* 
* @author <a href="mailto:[email protected]">Meilong Huang</a> 
* @version v1.0.0 
* @date 2012-6-26 05:24:10 
* 
*/ 

public class GetStartcode { 

    /** 
    * get regionservers' startcode 
    * 
    * @param args 
    * @throws ZooKeeperConnectionException 
    * @throws MasterNotRunningException 
    */ 
    public static void main(String[] args) throws MasterNotRunningException, 
      ZooKeeperConnectionException { 
     Configuration conf = HConfUtils 
       .setHbaseConf("k2.ccntgrid.org,k3.ccntgrid.org,k4.ccntgrid.org"); 
     HBaseAdmin admin = new HBaseAdmin(conf); 
     HMasterInterface master = admin.getMaster(); 
     Collection<ServerName> rs = master.getClusterStatus().getServerInfo(); 
     for (ServerName r : rs) { 
      System.out.println(r.getHostname()); 
      System.out.println(r.getServerName()); 
      System.out.println(r.getStartcode()); 
      System.out.println("+++++++++++++++++"); 
     } 
    } 
} 

실제로, startcode는 'servername'의 마지막 부분입니다.

이러한 명령은 다른 하나의 영역에서 regionserver 이동 완료 것이다

> [email protected] bin % pwd 
> /opt/kalium/hbase/bin 


> [email protected] bin % echo "move '3504a80cd4047f78834bcf58bf169e62', 'k4.ccntgrid.org,60020,1340682441023'" | ./hbase shell 
> HBase Shell; enter 'help<RETURN>' for list of supported commands. 
Type "exit<RETURN>" to leave the HBase Shell 
Version 0.92.1, r1298924, Fri Mar 9 16:58:34 UTC 2012 

> move '3504a80cd4047f78834bcf58bf169e62', 'k4.ccntgrid.org,60020,1340682441023' 
0 row(s) in 0.5380 seconds 

유이 끝날 때까지의 지역 코드가 필요하다. 지역 코드는 지역 이름의 마지막 부분입니다 (점 (.) 뒤에).
region code

2

당신은 HBase를 쉘에서 명령 상태를 사용할 수 있습니다

hbase(main):001:0> status 'simple' 

그것은 그들의 서버 이름, 포트 및 시작 코드와 지역 서버 목록을 인쇄합니다.

관련 문제