Hbase多租户(1)

Hbase 1.1.0 版本后社区给出处理 multiple workloads的方案,Quotas、Request Queues、 Multiple-Typed Queues

1. Quotas

针对用户、表、和表空间资源的限制

  • 每时间段请求的数量和大小
  • 表空间表的数量

配置

hbase.quota.enabled=true
hbase.quota.refresh.period =300000

示例

# Limit user u1 to 10 M write size per sec
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'u1', LIMIT => '10M/sec'
# Limit user u1 to 10 read requests per sec on table t2
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => READ, USER => 'u1', TABLE => 't2', LIMIT => '10req/sec'
# Limit all users to 10 requests per hour on namespace ns1
hbase> set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => '10req/hour'
# Limit all users to 10 T per hour on table t1
hbase> set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => '10T/hour'
# Create a namespace with a max of 5 tables
hbase> create_namespace 'ns1', {'hbase.namespace.quota.maxtables'=>'5'}
# Create a namespace with a max of 10 regions
hbase> create_namespace 'ns1', {'hbase.namespace.quota.maxregions'=>'10'
# user u1 is not affected by the limit
hbase> set_quota USER => 'u1', GLOBAL_BYPASS => true                     
  1. THROTTLE_TYPE 可以设置为write、read,默认为read+write
  2. 时间段值:sec、min、 hour、 day
  3. 请求大小值:B (bytes), K (kilobytes), M (megabytes), G (gigabytes), T (terabytes), P (petabytes)
  4. 请求数量:req
  5. 表或者region值为整数

2. Request Queues

0.99版本之后,HBase将默认请求队列由FIFO类型改为了Deadline类型。Deadline算法目标是使得在线交互式查询请求优先级更高,而离线长scan请求优先级更低。除此之外还有一个通常不会被注意的目标:不能出现任何请求被饿死!

HBase在具体实现中会为每一个请求设置一个deadline(时间期限),代表这个请求的处理期限,deadline越小,请求优先级越高。

Hbase多租户(1)_第1张图片
deadline.png

3. Multiple-Typed Queues

Multiple Queues

hbase.ipc.server.callqueue.handler.factor=0.1
假设总handlercount=150,则会产生15个独立队列。

Read and Write Queues

hbase.ipc.server.callqueue.read.ratio =0.6
表示会有9个队列用于接收读请求,6个用于接收写请求。

Get and Scan Queues

hbase.ipc.server.callqueue.scan.ratio=0.1
表示1个队列用于scan请求,另外8个用于get请求。

你可能感兴趣的:(Hbase多租户(1))