GBase 8a MPP
Cluster集群面临的挑战:
1.
系统资源不受控情况下,所有SQL执行都会抢占资源,这样会造成系统的不稳定;
2.
系统资源被一条低优先级的SQL大量占用,导致紧急SQL无法按时完成;
3.
复杂SQL在集群中往往会分多步执行,在并发情况下,同一SQL的任务会受资源限制,无法保证在所有节点间同步完成。
所以资源管理要解决的问题:
1.
系统资源能够按照策略分配使用;
2.
任务的执行要有优先级管理;
3.
复杂(多步)任务在集群中要有统一的管理策略(包括:资源分配、优先级、执行顺序等)。
优先级相关命令
1.
用户优先级设定
语法:
|
grant usage on *.* to
user_name with task_priority priority_value |
权限要求:
有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 |
2.
用户资源组设定
语法:
|
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 |
3.
查询并行度设定
语法:
|
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 |
4.
用户优先级与任务调度配重设定
语法
|
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 |




