1. 程式人生 > >HBase學習筆記——名稱空間(namespace)

HBase學習筆記——名稱空間(namespace)

在關係資料庫系統中,名稱空間namespace指的是一個表的邏輯分組,同一組中的表有類似的用途。

名稱空間的概念為即將到來的多租戶特性打下基礎:

  1. 配額管理(Quota Management (HBASE-8410)):限制一個namespace可以使用的資源,資源包括region和table等;
  2. 名稱空間安全管理(Namespace Security Administration (HBASE-9206)):提供了另一個層面的多租戶安全管理;
  3. Region伺服器組(Region server groups (HBASE-6721)):一個名稱空間或一張表,可以被固定到一組regionservers上,從而保證了資料隔離性。

一、名稱空間管理

名稱空間可以被建立、移除、修改。
表和名稱空間的隸屬關係在在建立表時決定,通過以下格式指定:
<namespace> : <table>
當為一張表指定名稱空間之後,對錶的操作都要加名稱空間,否則會找不到表。

相關shell操作如下所示:

  1. 建立一個名稱空間
    這裡寫圖片描述
  2. 根據名稱空間建立表
    這裡寫圖片描述
    此時名稱空間namespace應該存在,否則報錯。
  3. 刪除名稱空間
    這裡寫圖片描述
    在刪除一個名稱空間時,該名稱空間不能包含任何的表,否則會報錯。
  4. 修改名稱空間
    這裡寫圖片描述
    METHOD => ‘set’
    ‘PROPERTY_NAME’ => ‘PROPERTY_VALUE’
  5. 顯示所有名稱空間
    這裡寫圖片描述

二、預定義的名稱空間

有兩個系統內建的預定義名稱空間:

  1. hbase:系統名稱空間,用於包含hbase的內部表。
  2. default:所有未指定名稱空間的表都自動進入該名稱空間。

相關shell操作如下所示:

  1. 指定名稱空間
    這裡寫圖片描述
  2. 預設名稱空間
    這裡寫圖片描述

三、API

Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);

//create namespace named "ns"
admin.createNamespace(NamespaceDescriptor.create
("ns").build());
admin.close();

注意以下幾點:

  1. 必須將HBase叢集的hbase-site.xml檔案新增進工程的classpath中,或者通過Configuration物件設定相關屬性,否則程式獲取不到叢集相關資訊,也就無法找到叢集,執行程式時會報錯。
  2. 名稱空間一般在建模階段通過命令列建立,建立的機會不多。
  3. 建立HBaseAdmin物件時就已經建立了客戶端程式與HBase叢集的connection,所以在程式執行完成後,務必通過admin.close()關閉connection;