HBase
 sql >> Database >  >> NoSQL >> HBase

Le regioni HBase si fondono

HBase scrive i dati su più server, chiamati Server regionali .

Ciascun server di regione contiene una o più Regioni e i dati sono allocati su queste regioni; Hbase controllerà quale regione server controlla quali regioni.

Il numero delle regioni può essere definito a livello di creazione della tabella :

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

In precedenza abbiamo definito che 5 regioni sarebbero accurate, per quanto riguarda il numero di server della regione e la dimensione delle regioni desiderate, e vengono forniti 2 algoritmi di base, HexStringSplit e UniformSplit (ma puoi aggiungere i tuoi).

Puoi fornire le tue divisioni :

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

Quindi questa tabella2 è stato creato con le nostre 5 regioni, andiamo su HBase webUI per vedere come appare :

Abbiamo le nostre 5 regioni, vediamo la ripartizione delle chiavi e possiamo vedere i nomi delle regioni:table_name, start_key, end_key, timestamp.ENCODED_REGIONNAME.

Quindi ora, se vogliamo unire le regioni, possiamo usare merge_region nella shell hbase.
Le regioni devono essere adiacenti.

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

Sì.

Nota che ENCODED_REGIONNAME della regione dei risultati è una nuova.

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

Uniamo tutte le regioni, eventualmente!

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

Quindi possiamo vedere che rimane solo una regione :

Per la cronaca, puoi creare una tabella HBase pre-divisa se conosci la ripartizione delle tue chiavi:o passando SPLITS, o fornendo uno SPLITS_FILE che contiene i punti di divisione (quindi righe numero =regioni -1)
Fai attenzione all'ordine, SPLITS_FILE prima di {…} non funzionerà.

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

E il risultato: