2012-06-26 29 views
5

tải HBase cluster của tôi không cân bằng, vì vậy tôi muốn di chuyển một số vùng bảng từ máy chủ này sang máy khác, nhưng có vẻ như một mã khởi đầu của máy chủ vùng cần thiết để làm điều này, làm sao tôi có được mã khởi đầu này?Cách lấy mã khởi đầu của máy chủ vùng trong cụm HBase?

tôi nhận thấy rằng trang chủ-tình trạng của một ai đó là như thế này: other's master-status page

nhưng tôi là như thế này: my master-status page

nơi tôi có thể nhận được startcode?

trên thực tế, tôi muốn di chuyển một khu vực từ k3 regionserver để regionserver k2, và các khu vực trên k3 là: regions on k3

làm thế nào tôi có thể làm điều này? chi tiết :)

Trả lời

7

được rồi, cuối cùng tôi đã làm việc đó.

/* 
* 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("+++++++++++++++++"); 
     } 
    } 
} 

thực sự, mã khởi đầu là phần cuối cùng của 'tên máy chủ'.

các lệnh này sẽ kết thúc di chuyển vùng từ một regionserver để khác:

> [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 

u cần mã vùng để kết thúc này. mã vùng là phần cuối cùng của tên khu vực (sau dấu chấm (.)).
region code

2

Bạn có thể sử dụng tình trạng lệnh trong shell HBase:

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

Nó sẽ in danh sách các máy chủ khu vực với tên máy chủ, cổng và startcodes của họ.

Các vấn đề liên quan