sql >> データベース >  >> NoSQL >> HBase

HBaseリージョンがマージされます

    HBaseは、 Region Serversと呼ばれる複数のサーバーにデータを書き込みます 。

    各リージョンサーバーには、1つまたは複数のリージョンが含まれています 、およびデータはこれらの領域に割り当てられます。 Hbaseは、どのリージョンサーバーがどのリージョンを制御するかを制御します。

    リージョン番号は、テーブル作成レベルで定義できます:

    [hbase@gw vagrant]$ kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase
    [hbase@gw vagrant]$ hbase shell
    hbase(main):001:0> create 'table2', 'columnfamily1', {NUMREGIONS => 5, SPLITALGO => 'HexStringSplit'}

    リージョンサーバーの数と目的のリージョンサイズに関して、5つのリージョンが正確であると以前に定義しました。また、HexStringSplitとUniformSplitの2つの基本的なアルゴリズムが提供されています(ただし、追加することもできます)。

    独自の分割を提供できます:

    hbase(main):001:0> create 'table2', 'columnfamily1', {NUMREGIONS => 5, SPLITS=> ['a', 'b', 'c']}

    したがって、この table2 5つのリージョンで作成されたので、HBase webUIに移動して、どのように表示されるかを確認しましょう:

    5つのリージョンがあり、キーの再パーティションが表示され、リージョン名で確認できます:table_name、 start_key、end_key、timestamp.ENCODED_REGIONNAME。

    したがって、リージョンをマージする場合は、hbaseシェルでmerge_regionを使用できます。
    リージョンは隣接している必要があります。

    hbase(main):010:0> merge_region '234a12e83e203f2e3158c39e1da6b6e7', '89dd2d5a88e1b2b9787e3254b85b91d3'
    0 row(s) in 0.0140 seconds

    ええ。

    結果領域のENCODED_REGIONNAMEが新しいものであることに注意してください。

    hbase(main):012:0> merge_region 'bfad503057fca37bd60b5a83109f7dc6','e37d7ab5513e06268459c76d5e7335e4'
    0 row(s) in 0.0040 seconds

    最終的にはすべてのリージョンをマージしましょう!

    hbase(main):013:0> merge_region '0f5fc22bf0beacbf83c1ad562324c778','af6d7af861f577ba456cff88bf5e5e38','3f1e029afd907bc62f5e5fb8b6e1b5cf','3f1e029afd907bc62f5e5fb8b6e1b5cf'
    0 row(s) in 0.0290 seconds

    次に、1つの領域のみが残っていることがわかります:

    記録のために、キーの再パーティション化がわかっている場合は、事前に分割されたHBaseテーブルを作成できます。SPLITSを渡すか、分割ポイントを含むSPLITS_FILEを提供します(したがって、行番号=region -1)
    順序に注意してください。{…}の前のSPLITS_FILEは機能しません。

    [hbase@gw vagrant]$ echo "a\nb\nc" > /tmp/splits.txt;
    [hbase@gw vagrant]$ kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase
    [hbase@gw vagrant]$ hbase shell
    hbase(main):011:0> create 'test_split', { NAME=> 'cf', VERSIONS => 1, TTL => 69200 }, SPLITS_FILE => '/tmp/splits.txt'

    そしてその結果:


    1. MongoDBコレクション内に特定の埋め込みドキュメントを取得するにはどうすればよいですか?

    2. Redisはシングルスレッドですが、同時I / Oをどのように実行しますか?

    3. MongoDBでサブドキュメントを選択する方法

    4. MongoDB $ weeklyUpdate#65(2022年4月15日):GDELT、Mongoose、およびHackathon Time!