资源管理——通过资源管理功能,实现不同时间段对加载和查询混合场景的资源配置
1.背景介绍
有两个不同的用户:
UserLoad是一个加载业务为主的用户,白天一般任务数目以及紧急度均要求不高,而晚上则会开启一定任务数以及希望能尽快完成加载;
UserSelect 是一个查询业务为主的用户,要求白天任务多,要求响应及时,而晚上则任务是减少。
这就需要白天和晚上对这两个用户所在的资源消费组分别挂接不同的动态资源池,并以此为规律进行不断切换,达到同一个用户在不同的时间段受到不同的控制,从而更合理使用资源。
2.资源分配计划
由于Gbase8a集群的资源管理对内存的限制只作用于任务中聚合、连接等算子使用的内存, 所以这里只假设每台Gnode数据机器预备留10G内存分配给算子buffer,那么根据资源需求量,对这两个用户使用的资源池分配资源为:
白天UserLoad所对应的动态资源池分配 20% cpu,2G内存;
白天UserSelect分配 80% cpu ,8G内存;
晚上UserLoad分配80% cpu,8G内存;
晚上UserSelect分配20% cpu,2G内存;
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
<1> 白天(假设早上8:00)
set global active_resource_plan =plan_day;
<2> 晚上(假设晚上20:00)
set global active_resource_plan =plan_night;
(6)资源管理计划关系图
白天作业资源管理计划

夜间作业资源管理计划

评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526