HBase Quota的使用
背景:多租戶共享集群時,可以針對Namespace,Table,User進行請求的限制,控制負載,避免請求過多導致集群受影響。

啟用Quota
默認情況下,quota功能處于禁用狀態。要啟用quota,將“hbase-site.xml”文件中的參數“hbase.quota.enabled”的值改為“true”
Quota緩存刷新配置
默認情況下,quota設置緩存刷新周期“hbase.quota.refresh.period”設為5*60000(5分鐘)。這就意味著,用戶在更新quota設置后最多需要等待5分鐘,這些設置才能生效。
設置Quota
當由于用戶數量或用戶請求過多而導致集群工作負載增加時,系統需要按照優先順序對用戶或用戶請求進行排列以實現平穩運行。可利用HBase quota功能,讓管理員限制HBase系統中的表、分區或請求的數量。
HBase提供以下三種類型的quota:
·???????? Namespace quota:一個Namespace中可包含的表或分區的數量
·???????? 請求數量quota:某個用戶或某些相同名字的用戶可以在任意指定時間內在特定表上或Namespace中執行的請求的數量。
·???????? 請求大小quota:某個用戶或某些相同名字的用戶可以在任意指定時間內在特定表上或Namespace中執行的請求的大小。
下面介紹每一種Quota的用法
1.? Namespace Quota
Namespace quota用于設置一個Namespace中可包含的表或分區的數量。以下是Namespace quota:
設置Namespace中可包含的表的數量
示例
命令說明
create_namespace 'namespace_name', ? {'hbase.namespace.quota.maxtables'=>'5'}
使用quota的maxtables來創建Namespace。
describe_namespace 'namespace_name '
顯示Namespace的quota信息。
alter_namespace 'namespace_name ', {METHOD => ? 'set', 'hbase.namespace.quota.maxtables'=>'8'}
修改現有的Namespace并設置quota的maxtables值。
alter_namespace 'namespace_name ', {METHOD => ? 'unset', NAME=> 'hbase.namespace.quota.maxtables'}
刪除Namespace中設置的quota的maxtables值。
設置Namespace中可包含的分區的數量
示例
命令說明
create_namespace 'namespace_name', {'hbase.namespace.quota.maxregions'=>'10'}
使用quota的maxregions來創建Namespace。
describe_namespace 'namespace_name '
顯示Namespace的quota信息。
alter_namespace 'namespace_name ', {METHOD => ? 'set', 'hbase.namespace.quota.maxregions'=>'20'}
修改現有的Namespace并設置quota的maxregions值。
alter_namespace 'namespace_name ', {METHOD => ? 'unset', NAME=> 'hbase.namespace.quota.maxregions'}
刪除Namespace中設置的quota的maxregions值。
2.? 請求數量Quota
請求數量Quota保留某個用戶或某些相同名字的用戶可以在任意指定時間內在特定表上或Namespace中執行的請求數量。
請求數量Quota在命令中使用時間單位。有效的時間單位為秒(sec)、分(min)、小時(hour)和天(day)。
以下是五種設置請求數量Quota的示例:
設置用戶在指定時間內可以執行的請求數量
示例
命令說明
set_quota TYPE => THROTTLE, USER => ? 'user_name', LIMIT => '10req/sec'
對指定用戶設置每秒10個請求的quota。
list_quotas USER => 'user_name'
顯示指定用戶的quota信息。
set_quota TYPE => THROTTLE, USER => ' ? user_name ', LIMIT => NONE
刪除指定用戶的quota。
設置用戶在指定時間內在指定表上可以執行的請求數量
示例
命令說明
set_quota TYPE => THROTTLE, USER => ' ? user_name ', TABLE => 't1', LIMIT => '10req/sec'
對指定用戶的特定表設置每秒10個請求的quota。
list_quotas USER => 'user_name', TABLE => 't1'
顯示指定用戶在特定表上的quota信息。
set_quota TYPE => THROTTLE, USER => 'u1', ? TABLE => 't1', LIMIT => NONE
刪除指定用戶的特定表的quota。
設置用戶在指定時間內在指定Namespace上可以執行的請求數量
示例
命令說明
set_quota TYPE => THROTTLE, USER => ' ? user_name ', NAMESPACE => 'ns1', LIMIT => '10req/sec'
對指定用戶的特定Namespace設置每秒10個請求的quota。
list_quotas USER => 'user_name', NAMESPACE => ? 'ns.*'
顯示指定用戶在特定Namespace上的quota信息。
set_quota TYPE => THROTTLE, USER => 'u1', ? NAMESPACE => 'ns1', LIMIT => NONE
刪除指定用戶的特定Namespace的quota。
設置在指定時間內可以在表上執行的請求數量
示例
命令說明
set_quota TYPE => THROTTLE, TABLE => 't1, ? LIMIT => '10req/sec'
針對特定表設置每秒10個請求的quota。
list_quotas TABLE => 't1'
顯示特定表的quota信息。
set_quota TYPE => THROTTLE, TABLE => 't1', ? LIMIT => NONE
刪除特定表的quota。
設置在指定時間內可以在Namespace中執行的請求數量
示例
命令說明
set_quota TYPE => THROTTLE, NAMESPACE => ? 'ns1', LIMIT => '10req/sec'
針對特定Namespace設置每秒10個請求的quota。
list_quotas NAMESPACE => 'ns1'
顯示特定Namespace的quota信息。
set_quota TYPE => THROTTLE, NAMESPACE => ? 'ns1', LIMIT => NONE
刪除特定Namespace的quota。
3.? 請求大小Quota
請求大小quota是指設置某個用戶或某些相同名字的用戶可以在任意指定時間內在特定表上或Namespace中執行的請求大小。
請求大小quota在命令中使用時間和大小單位。有效的大小單位為B(字節)、K(千字節)、M(兆字節)、G(十億字節)、T(兆兆字節)和P(千萬億字節)。
以下是五種設置請求大小quota的示例:
設置用戶在指定時間內可以執行的請求大小
示例
命令說明
set_quota TYPE => THROTTLE, USER => ? 'user_name', LIMIT => '5K/min'
對指定用戶設置每分鐘5千字節的quota。
list_quotas USER => 'user_name'
顯示指定用戶的quota信息。
set_quota TYPE => THROTTLE, USER => ' ? user_name ', LIMIT => NONE
刪除指定用戶的quota。
·
設置在指定時間內在指定表上可以執行的請求大小
示例
命令說明
set_quota TYPE => THROTTLE, USER => 'u1', ? TABLE => 'table_name', LIMIT => '5K/min'
對指定用戶的特定表設置每分鐘5千字節的quota。
list_quotas USER => 'bob.*', TABLE => 't1'
顯示指定用戶在特定表上的quota信息。
set_quota TYPE => THROTTLE, USER => 'u1', ? TABLE => 't1', LIMIT => NONE
刪除指定用戶的特定表的quota。
·
設置用戶在指定時間內在指定Namespace中可以執行的請求大小
示例
命令說明
set_quota TYPE => THROTTLE, USER => 'u1', ? NAMESPACE => 'ns1', LIMIT => '5K/min'
對指定用戶的特定Namespace設置每分鐘5千字節的quota。
list_quotas USER => 'bob.*', NAMESPACE => ? 'ns.*'
顯示指定用戶在特定Namespace上的quota信息。
set_quota TYPE => THROTTLE, USER => 'u1', ? NAMESPACE => 'ns1', LIMIT => NONE
刪除指定用戶的特定Namespace的quota。
設置在指定時間內可以在表上執行的請求大小
示例
命令說明
set_quota TYPE => THROTTLE, TABLE => 't1', ? LIMIT => '5K/min'
針對特定表設置每分鐘5千字節的quota。
list_quotas TABLE => 'myTable'
顯示特定表的quota信息。
set_quota TYPE => THROTTLE, TABLE => 't1', ? LIMIT => NONE
刪除特定表的quota。
設置在指定時間內可以在Namespace中執行的請求大小
示例
命令說明
set_quota TYPE => THROTTLE, NAMESPACE => ? 'ns1', LIMIT => '5K/min'
針對特定Namespace設置每分鐘5千字節的quota。
list_quotas NAMESPACE => 'ns.*'
顯示特定Namespace的quota信息。
set_quota TYPE => THROTTLE, NAMESPACE => ? 'ns1', LIMIT => NONE
刪除特定Namespace的quota。
表格存儲服務 CloudTable HBase
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。