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

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

  1. 用户资源组设定

    语法:
    

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

  1. 查询并行度设定

    语法:

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

  1. 用户优先级与任务调度配重设定

    语法

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


GBase数据库
1 声望2 粉丝

GBase数据库知识分享