我的HBase集羣的負載不平衡,所以我想從一個區域服務器的一些區域的表移動到其他,但似乎需要一個區域服務器的startcode這樣做,我怎麼能得到這個開始代碼?如何在HBase集羣中獲取regionservers的startcode?
我注意到,有人的主狀態頁面是這樣的:
,但我的是這樣的:
我在哪裏可以得到起始碼?
實際上,我想從RegionServer的K3移動區域RegionServer的K2和K3上的區域是:
我怎麼能做到這一點?詳細:)
我的HBase集羣的負載不平衡,所以我想從一個區域服務器的一些區域的表移動到其他,但似乎需要一個區域服務器的startcode這樣做,我怎麼能得到這個開始代碼?如何在HBase集羣中獲取regionservers的startcode?
我注意到,有人的主狀態頁面是這樣的:
,但我的是這樣的:
我在哪裏可以得到起始碼?
實際上,我想從RegionServer的K3移動區域RegionServer的K2和K3上的區域是:
我怎麼能做到這一點?詳細:)
好吧,最後我解決了它。
/*
* 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
u需要的區域碼來完成這一點。區域代碼是區域名稱的最後一部分(在點(。)後面)。
可以使用命令狀態在HBase的外殼:
hbase(main):001:0> status 'simple'
它將打印區域的服務器列表與他們的服務器名稱,端口和起始碼。