HBase menulis data ke beberapa server, yang disebut Server Wilayah .
Setiap server wilayah berisi satu atau beberapa Wilayah , dan data dialokasikan di wilayah ini; Hbase akan mengontrol server wilayah mana yang mengontrol wilayah mana.
Nomor wilayah dapat ditentukan pada tingkat pembuatan tabel :
[hbase@gw gelandangan]$ kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase[hbase@gw gelandangan]$ hbase shellhbase(main):001:0> buat 'table2' , 'columnfamily1', {NUMREGIONS => 5, SPLITALGO => 'HexStringSplit'}
Kami sebelumnya telah menetapkan bahwa 5 wilayah akan akurat, terkait dengan jumlah server wilayah dan ukuran wilayah yang diinginkan, dan 2 algoritme dasar disediakan, HexStringSplit dan UniformSplit (tetapi Anda dapat menambahkan milik Anda).
Anda dapat memberikan split Anda sendiri :
hbase(main):001:0> buat 'table2', 'columnfamily1', {NUMREGIONS => 5, SPLITS=> ['a', 'b', 'c']}
Jadi ini tabel2 telah dibuat dengan 5 wilayah kami, mari kita pergi ke HBase webUI untuk melihat seperti apa :
Kami memiliki 5 wilayah kami, lihat partisi ulang kunci, dan kami dapat melihat di nama wilayah:table_name, start_key,end_key,timestamp.ENCODED_REGIONNAME.
Jadi sekarang, jika kita ingin menggabungkan region, kita bisa menggunakan merge_region di hbase shell.
Region harus bersebelahan.
hbase(main):010:0> merge_region '234a12e83e203f2e3158c39e1da6b6e7', '89dd2d5a88e1b2b9787e3254b85b91d3'0 baris dalam 0,0140 detik
Ya.
Perhatikan bahwa ENCODED_REGIONNAME dari wilayah hasil adalah yang baru.
hbase(main):012:0> merge_region 'bfad503057fca37bd60b5a83109f7dc6','e37d7ab5513e06268459c76d5e7335e4'0 baris dalam 0,0040 detik
Mari gabungkan semua wilayah, akhirnya!
hbase(main):013:0> merge_region '0f5fc22bf0beacbf83c1ad562324c778','af6d7af861f577ba456cff88bf5e5e38','3f1e029afd907bc62f5e5fb5908b6e1b
Kemudian kita dapat melihat bahwa hanya satu wilayah yang tersisa :
Sebagai catatan, Anda dapat membuat tabel HBase yang telah dipecah sebelumnya jika Anda mengetahui partisi ulang kunci Anda :baik dengan melewatkan SPLITS, atau dengan menyediakan SPLITS_FILE yang berisi titik-titik pemisahan (jadi nomor baris =daerah -1)
Perhatikan pesanannya, SPLITS_FILE sebelum {…} tidak akan berfungsi.
[hbase@gw gelandangan]$ echo "a\nb\nc"> /tmp/splits.txt;[hbase@gw gelandangan]$ kinit -kt /etc/security/keytabs/hbase.headless. keytab hbase[hbase@gw gelandangan]$ hbase shellhbase(main):011:0> buat 'test_split', { NAMA=> 'cf', VERSI => 1, TTL => 69200 }, SPLITS_FILE => '/tmp/ splits.txt'
Dan hasilnya :