sql >> Databáze >  >> NoSQL >> HBase

Oblasti HBase se sloučí

HBase zapisuje data na více serverů, nazývaných Region Servers .

Každý server regionu obsahuje jeden nebo několik regionů a údaje jsou přiděleny na tyto regiony; Hbase bude řídit, který region server řídí, které regiony.

Počet regionů lze definovat na úrovni vytváření tabulky:

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

Již dříve jsme definovali, že 5 regionů bude přesných, pokud jde o počet serverů regionů a požadovanou velikost regionů, a jsou dodávány 2 základní algoritmy, HexStringSplit a UniformSplit (ale můžete přidat svůj).

Můžete poskytnout své vlastní rozdělení:

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

Takže tato tabulka2 byl vytvořen s našimi 5 regiony, pojďme do webového uživatelského rozhraní HBase, abychom viděli, jak to vypadá:

Máme svých 5 oblastí, podívejte se na rozdělení klíčů a v názvech oblastí vidíme:název_tabulky, start_key,end_key,timestamp.ENCODED_REGIONNAME.

Takže nyní, pokud chceme sloučit oblasti, můžeme použít merge_region v hbase shellu.
Oblasti musí sousedit.

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

Ano.

Všimněte si, že ENCODED_REGIONNAME výsledné oblasti je nová.

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

Nechte nakonec sloučit všechny regiony!

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

Pak můžeme vidět, že zbývá pouze jeden region :

Pro záznam, můžete vytvořit tabulku HBase předem rozdělenou, pokud znáte přerozdělení vašich klíčů:buď předáním SPLITS, nebo poskytnutím SPLITS_FILE, který obsahuje body rozdělení (takže číslo řádků =regiony -1)
Uvědomte si objednávku, SPLITS_FILE před {…} nebude fungovat.

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

A výsledek:


  1. Existuje v agregačním rámci Mongodb podlahová funkce?

  2. Co je automatické převzetí služeb při selhání NameNode v Hadoop HDFS?

  3. Návrh aplikace s Redis jako úložiště dat. Co? Proč?

  4. řídké indexy a hodnoty null v mongo