GBase 8a MPP Cluster集群面临的挑战:
- 系统资源不受控情况下,所有SQL执行都会抢占资源,这样会造成系统的不稳定;
- 系统资源被一条低优先级的SQL大量占用,导致紧急SQL无法按时完成;
- 复杂SQL在集群中往往会分多步执行,在并发情况下,同一SQL的任务会受资源限制,无法保证在所有节点间同步完成。
所以资源管理要解决的问题:
- 系统资源能够按照策略分配使用;
- 任务的执行要有优先级管理;
- 复杂(多步)任务在集群中要有统一的管理策略(包括:资源分配、优先级、执行顺序等)。
优先级相关命令
- 用户优先级设定
语法:
grant usage on . to user_name with task_priority priority_value
priority_value的取值范围为0,1,2,3对应最小优先级,低优先级、中优先级和高优先级,缺省为中优先级2。
权限要求:
有grant权限的用户,推荐用户: root
示例:
gbase> create user uer1 ;
Query OK, 0 rows affected
gbase> grant usage on . to uer1 with task_priority 1;
Query OK, 0 rows affected
gbase> select task_priority from user where user='user1';
| task_priority |
| 1 |
1 row in set
用户资源组设定
语法:
grant usage on . to user_name with resource_group group_value
group_value的取值范围为0-15,0组为缺省组。
权限要求:
有grant权限的用户,推荐用户: root。
示例:
gbase> create user user0 identified by 'user0';
Query OK, 0 rows affected
gbase> grant usage on . to user0 with resource_group 0;
Query OK, 0 rows affected
gbase> select resource_group from user where user='user0';
| resource_group |
| 0 |
1 row in set
查询并行度设定
语法:
grant usage on . to user_name with max_cpus_used max_cpus_used_value
max_cpus_used_value的取值范围为大于0的整数,该参数决定查询的并行度,推荐值为用户所在资源组的可用CPU数目。
权限要求:
有grant权限的用户,推荐用户: root。
示例:
gbase> use gbase;
Query OK, 0 rows affected
gbase> create user user1;
Query OK, 0 rows affected
gbase> grant usage on . to user1 with max_cpus_used 4;
Query OK, 0 rows affected
gbase> select max_cpus from user where user='user1';
| max_cpus |
| 4 |
1 row in set
用户优先级与任务调度配重设定
语法
Set gcluster global gbase_high_priority_weight = weight_value(80-100)
Set gcluster global gbase_mid_priority_weight = weight_value (60-80)
Set gcluster global gbase_low_priority_weight = weight_value (40-60)
Set gcluster global gbase_min_priority_weight = weight_value (20-40)
weight_value 取值按高、中、低、最小划分,具体范围如下:
高: 80 – 100
中: 60 - 80
低: 40 - 60
最小:20 - 40
权限要求
有set权限用户
示例
gbase> Set gcluster global gbase_min_priority_weight = 20;
Query OK, 0 rows affected, 32 warnings (Elapsed: 00:00:00.01)
gbase> show variables like '%gbase_min_priority_weight%';
| Variable_name | Value |
| gbase_min_priority_weight | 20 |
1 row in set (Elapsed: 00:00:00.00)
说明
使用上述语句配重值不会持久化,即gnode重新启动后会丢失。
要是需要持久化,则需要在执行该语句之前先执行:
set gbase_global_variable_persistent = 1
执行该语句后执行:
set gbase_global_variable_persistent = 0
配重参数可控制cpu.shares 与blkio.weight参数。
具体可参考
参数
CGroup最小值
CGroup最大值
CGroup缺省值
集群
最小值
集群
最大值
集群比重计算
cpu.shares
1
无
1024
1
2560
(2560 * weight) / 100
Blkio.weight
1
1000
300
1
1000
(1000 * weight) / 100
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。