1.1.1 资源管理示例
1.1.1.1
加载和查询混合场景
1.1.1.1.1
背景介绍
假设有两个不同的用户:
l UserLoad是一个加载业务为主的用户,白天一般任务数目以及紧急度均要求不高,而晚上则会开启一定任务数并且希望能尽快完成加载;
l UserSelect是一个查询业务为主的用户,白天任务多,要求响应及时,而晚上任务数减少。
这就需要白天和晚上对这两个用户所在的资源消费组分别挂接不同的动态资源池,并以此为规律不断切换,达到同一个用户在不同的时间段受到不同的控制,从而更合理地使用资源的目的。
1.1.1.1.2
资源分配计划
由于GBase 8a MPP Cluster的资源管理对内存的限制只作用于任务中聚合、连接等算子使用的内存,所以这里只假设每台Data节点预备留10G内存分配给算子buffer,那么根据资源需求量,对这两个用户使用的资源池分配资源为:
白天UserLoad所对应的动态资源池分配
20% CPU,2G内存;
白天UserSelect分配
80% CPU,8G内存;
晚上UserLoad分配80%
CPU,8G内存;
晚上UserSelect分配20%
CPU,2G内存。
1.1.1.1.3
实现步骤
可以创建两个plan,分别针对白天和晚上两个不同时段做资源分配,通过切换plan达到此资源控制方式。
步骤1
创建资源消费组并将用户挂接到对应的组
|
create
consumer group group_load comment = 'users for load'; create consumer group group_select comment
= 'users for select'; alter consumer group group_load add
user userload; alter consumer group group_select add
user userselect; |
步骤2
创建资源池
1.
静态资源池
|
create
resource pool static_pool0( cpu_percent=100, max_memory=10000, max_temp_diskspace=10000, max_disk_space=10000, max_disk_writeio=1000, max_disk_readio=1000) type static; |
2.
动态资源池
|
create
resource pool high_pool( priority=1, cpu_percent=80, max_memory=8000, max_temp_diskspace=5000, max_disk_space=5000, max_disk_writeio=600, max_disk_readio=600, max_activetask=200, task_max_parallel_degree=100, task_waiting_timeout=100000, task_running_timeout=100000) type dynamic base on static_pool0; create resource pool low_pool( priority=1, cpu_percent=20, max_memory=2000, max_temp_diskspace=5000, max_disk_space=5000, max_disk_writeio=400, max_disk_readio=400, max_activetask=200, task_max_parallel_degree=100, task_waiting_timeout=100000, task_running_timeout=100000) type dynamic base on static_pool0; |
步骤3
创建资源计划
|
create
resource plan plan_day comment = 'day plan'; create resource plan plan_night
comment = 'night plan'; |
步骤4
创建资源计划
|
create
resource directive directive1 (plan_name ='plan_day', pool_name='high_pool', group_name = 'group_select', comment = 'select user resource usage on
day'); create resource directive directive2 (plan_name ='plan_day', pool_name = 'low_pool', group_name = 'group_load', comment = 'load user resource usage on
day'); create resource directive directive3 (plan_name = ‘plan_day', pool_name='high_pool', group_name = 'default_consumer_group', comment = 'other user resource usage on
day '); create resource directive directive4 (plan_name='plan_night', pool_name='high_pool', group_name = 'group_load', comment = ' load user resource usage on
night '); create resource directive directive5 ( plan_name='plan_night',
pool_name='low_pool',
group_name = 'group_select',
comment = ' select user resource usage on night '); create resource directive directive6 (plan_name ='plan_night', pool_name='low_pool ', group_name = 'default_consumer_group', comment = 'other user resource usage on
night'); |
步骤5
激活plan
l 白天(假设早上8:00)
|
active
resource plan plan_day on vc vc1; |
l 晚上(假设晚上20:00)
|
deactive resource plan plan_day on
vc vc1; active resource plan plan_night on vc
vc1; |
1.1.1.2
白天跑查询,晚上跑批场景
这种场景和上例场景一致,只要按照用户划分好资源计划,即可按照上述方式实现。
1.1.1.3
高低写限速组场景
1.
这种场景和上例场景一致,区别在于对磁盘读写I/O数值的设置,例如要限制低写限速组(例如:10M/S)和高写限速组(例如100M/S)的资源计划。
2.
由于RH6.x/SUSE11等低版本的操作系统存在内核缺陷,在ext日志文件系统上,高限速组和低限速组表现出串行现象,高限速组最高只能达到低限速组峰值的2倍。建议在RH7.3/SUSE12以上版本的操作系统中使用I/O限速功能。
1.1.1.4
全天数据加工和查询任务并行场景
1.1.1.4.1
背景介绍
数据加工用户:UserA,UserB;
查询用户:UserC,UserD,UserE;
其他用户按照数据加工用户方式处理。
资源分配需求:保障查询性能,控制加工消耗的性能。
1.1.1.4.2
实现步骤
步骤1
创建资源消费组并关联用户
|
create
consumer group
group_process comment = 'users for
process’; create consumer group group_select comment = 'users for select'; alter consumer group group_process add user usera; alter consumer group group_process add user userb; alter consumer group group_select add user userc; alter consumer group group_select add user userd; alter consumer group group_select add user usere; |
步骤2
创建资源池
1.
静态资源池
|
create
resource pool static_pool0( cpu_percent=100, max_memory=10000, max_temp_diskspace=10000, max_disk_space=10000, max_disk_writeio=1000, max_disk_readio=1000) type static; |
2.
动态资源池
|
create
resource pool pool_select( priority=1, cpu_percent=80, max_memory=6000, max_temp_diskspace=5000, max_disk_space=5000, max_disk_writeio=600, max_disk_readio=600, max_activetask=200, task_max_parallel_degree=100, task_waiting_timeout=100000, task_running_timeout=100000) type dynamic base on static_pool0; create resource pool pool_process( priority=1, cpu_percent=20, max_memory=4000, max_temp_diskspace=5000, max_disk_space=5000, max_disk_writeio=400, max_disk_readio=400, max_activetask=200, task_max_parallel_degree=100, task_waiting_timeout=100000, task_running_timeout=100000) type dynamic base on static_pool0; |
步骤3
创建资源计划
|
create
resource plan resource_plan comment = 'resource plan'; |
步骤4
创建资源计划
|
create
resource directive directive1 (plan_name = 'resource_plan' , pool_name = 'pool_select', group_name = 'group_select', comment = 'select user resource usage '); create resource directive directive2 (plan_name = 'resource_plan', pool_name = 'pool_process', group_name = 'group_process', comment = 'process user resource usage '); create resource directive directive3 (plan_name = 'resource_plan', pool_name = ' pool_process ', group_name = 'default_consumer_group', comment = 'other user resource usage '); |
步骤5
激活计划
|
active resource plan resource_plan on
vc vc1; |




