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

HBase regioner fusionere

HBase skriver data til flere servere, kaldet Region servere .

Hver region server indeholder en eller flere Regioner , Og data fordeles på disse områder; Hbase vil styre hvilken region server kontroller som region (er).

Regioner nummer kan defineres ved oprettelsen bordet niveau:

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

Vi har tidligere defineret, at 5 regioner ville være nøjagtige, med hensyn til regionens servere nummer og ønsket regioner størrelse, og 2 grundlæggende algoritmer leveres, HexStringSplit og UniformSplit (men du kan tilføje din).

Du kan give dine egne splits:

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

Så dette Tabel2 er blevet skabt med vores 5 regioner, lad os gå til HBase WebUI at se, hvad det ser ud:

Vi har vores 5 regioner, se tasterne fordeling, og vi kan se i regionerne navne:tabelnavn, start_key, end_key, timestamp.ENCODED_REGIONNAME.

Så nu, hvis vi ønsker at flette regioner, kan vi bruge merge_region i hbase skal.
Regionerne skal være tilstødende.

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

Ja.

Bemærk, at ENCODED_REGIONNAME af resultatet region er en ny.

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

Lade fusionere alle regioner, i sidste ende!

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

Så kan vi se, at kun én region rester:

For posten, kan du oprette en HBase bord på forhånd delt, hvis du kender fordelingen af dine nøgler:enten ved at føre SPLITS, eller ved at give en SPLITS_FILE som indeholder de punkter af opsplitning (så linjerne nummer =regioner -1)
Vær opmærksom på rækkefølgen, SPLITS_FILE før {...} vil ikke arbejde.

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

Og resultatet:


  1. Matcher ObjectId til String for $graphLookup

  2. Gendan en MongoDB-database ved hjælp af mongorestore

  3. Sådan opretter du indekser i MongoDB via .NET

  4. Brug jedis hvordan man skriver til en specifik slot/node i redis cluster