HBase ghi dữ liệu vào nhiều máy chủ, được gọi là Máy chủ vùng .
Mỗi máy chủ khu vực chứa một hoặc một số Khu vực , và dữ liệu được phân bổ trên các vùng này; Hbase sẽ kiểm soát máy chủ khu vực nào kiểm soát (các) khu vực nào.
Số vùng có thể được xác định ở cấp độ tạo bảng:
[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'}
Trước đây, chúng tôi đã xác định rằng 5 khu vực sẽ chính xác, liên quan đến số lượng máy chủ khu vực và kích thước khu vực mong muốn và 2 thuật toán cơ bản được cung cấp, HexStringSplit và UniformSplit (nhưng bạn có thể thêm của bạn).
Bạn có thể cung cấp phần tách riêng của mình:
hbase(main):001:0> create 'table2', 'columnfamily1', {NUMREGIONS => 5, SPLITS=> ['a', 'b', 'c']}
Vì vậy, table2 này đã được tạo với 5 khu vực của chúng tôi, hãy vào webUI của HBase để xem nó trông như thế nào:
Chúng tôi có 5 khu vực, hãy xem phân vùng lại các khóa và chúng tôi có thể thấy tên các khu vực:table_name, start_key, end_key, timestamp.ENCODED_REGIONNAME.
Vì vậy, bây giờ, nếu chúng ta muốn hợp nhất các vùng, chúng ta có thể sử dụng merge_region trong hbase shell.
Các vùng phải liền nhau.
hbase(main):010:0> merge_region '234a12e83e203f2e3158c39e1da6b6e7', '89dd2d5a88e1b2b9787e3254b85b91d3'
0 row(s) in 0.0140 seconds
Vâng.
Lưu ý rằng ENCODED_REGIONNAME của vùng kết quả là một vùng mới.
hbase(main):012:0> merge_region 'bfad503057fca37bd60b5a83109f7dc6','e37d7ab5513e06268459c76d5e7335e4'
0 row(s) in 0.0040 seconds
Cuối cùng, hãy hợp nhất tất cả các vùng!
hbase(main):013:0> merge_region '0f5fc22bf0beacbf83c1ad562324c778','af6d7af861f577ba456cff88bf5e5e38','3f1e029afd907bc62f5e5fb8b6e1b5cf','3f1e029afd907bc62f5e5fb8b6e1b5cf'
0 row(s) in 0.0290 seconds
Sau đó, chúng ta có thể thấy rằng chỉ còn lại một vùng:
Đối với bản ghi, bạn có thể tạo bảng HBase được phân tách trước nếu bạn biết phân vùng lại các khóa của mình:bằng cách chuyển SPLITS hoặc bằng cách cung cấp SPLITS_FILE chứa các điểm phân tách (vì vậy số dòng =vùng -1)
Hãy lưu ý về đơn đặt hàng, SPLITS_FILE trước khi {…} sẽ không hoạt động.
[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'
Và kết quả: