HBase多租戶-Namespace Quota管理

weixin_34208283發表於2017-07-07

在多租戶的HBase環境中,通常給一個租戶分配一個namespace,因此namespace的容量管理是多租戶管理必不可少的一部分.目前namespace支援三種容量的管理,table的最大數目,region的最大數目和namespace佔用的檔案系統空間.本文給出了通過hbase shell和JAVA API兩種方式設定namespace quota的方法.

Number-of-Tables Quotas和Number-of-Regions Quotas

設定namespace quota之前,必須要在hbase-site里加一項配置,否則不會生效.

hbase.quota.enable=true

hbase shell設定Quota

建立namespace時設定quota

create_namespace 'myns', {'hbase.namespace.quota.maxtables'=>'2'}

增加或修改namespace quota

alter_namespace 'myns', {METHOD => 'set', 'hbase.namespace.quota.maxregions' => '5'}

刪除namespace quota

alter_namespace 'myns', {METHOD => 'unset', NAME => 'hbase.namespace.quota.maxtables'}

如果建立表的操作超過了maxregions閾值,HBase shell會給出錯誤提示:

hbase(main):001:0> create 'myns:t1','f1'

ERROR: The table myns:t1 is not allowed to have 1 regions. The total number of regions permitted is only 5, while current region count is 5. This may be transient, please retry later if there are any ongoing split operations in the namespace.

JAVA API設定Quota

connection = ConnectionFactory.createConnection(conf);
Admin admin = this.connection.getAdmin();
NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("myns").build();
namespaceDescriptor.setConfiguration(
        "hbase.namespace.quota.maxtables", "10");
namespaceDescriptor.setConfiguration(
        "hbase.namespace.quota.maxregions", "100");
admin.createNamespace(namespaceDescriptor);
admin.close();

注: 以上兩種quota管理從HDP2.4開始就支援,更早之前的HDP版本沒有調研是否支援.

Namespace Storage Quota

HDP2.6加入了新的feature,支援給namespace設定檔案系統空間容量,並且提供了多種策略定義當容量超過閾值之後的行為. 具體命令可以參考 Hortonworks官方文件: HBase Quota Management

在此之前的版本,要想限制namespace佔用的空間大小,只能利用hdfs給namespace所在的目錄設定容量限制.

相關文章