6

HBase クラスターの負荷が不均衡なので、テーブルの一部の領域をある領域サーバーから別の領域サーバーに移動したいのですが、これを行うには領域サーバーの開始コードが必要なようです。この開始コードを取得するにはどうすればよいですか?

誰かのマスター ステータス ページが次のようになっていることに気付きました。 他人のマスターステータスページ

しかし、私のものは次のようなものです: 私のマスターステータスページ

スタートコードはどこで入手できますか?

実際、リージョンをリージョンサーバー k3 からリージョンサーバー k2 に移動したいのですが、k3 のリージョンは次のとおりです。 k3 のリージョン

これどうやってするの?詳細に :)

4

2 に答える 2

8

わかりました、ついに私はそれを解決しました。

/*
 * 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:ml.huang@kaliumn.com">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」の最後の部分です。

これらのコマンドは、あるリージョン サーバーから別のリージョン サーバーへのリージョンの移動を完了します。

> ka@k1 bin % pwd
> /opt/kalium/hbase/bin


> ka@k1 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

これを完了するには地域コードが必要です。地域コードは、地域名の最後の部分 (ドット (.) の後ろ) です。
地域コード

于 2012-06-26T12:22:24.810 に答える
3

コマンド status は hbase シェルで使用できます。

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

サーバー名、ポート、および開始コードを含む地域サーバーのリストを出力します。

于 2016-08-02T13:07:01.153 に答える