云原生数据仓库AnalyticDB MySQL版支持将计算资源在物理上划分为多个资源组。每个资源组拥有独立的CPU、内存、查询队列、任务类型和配置参数。不同资源组的计算资源完全隔离,不仅可以保障核心业务不受复杂计算和突发状况影响,还能合理分配资源使集群性能达到最大化,满足集群内部多租户和混合负载的需求。本文介绍湖仓版资源组的类型和应用场景。
每个集群都有一个默认资源组USER_DEFAULT
。在没有其他资源组的情况下,所有查询都由默认资源组执行。
资源组有什么作用
隔离不同查询的计算资源:不同用户或应用的查询可能对计算资源的需求不同。您可以将不同查询投递到不同的资源组实现不同查询的计算资源隔离,确保对延迟敏感的交互式任务不受执行耗时长、资源消耗大的批处理任务的影响。详情请参见如何使用指定资源组的资源执行查询。
具有离线批处理的业务需求:默认资源组适用于交互式在线分析。如果您有离线批处理的需求,希望离线批处理不影响在线分析的响应速度,可以创建Job型资源组专门用于离线批处理。详情请参见新建和管理资源组。
实现资源的定时或自动弹性:如果业务具有规律的波峰波谷时,您可以配置弹性计划,定时自动增加或减少资源组的资源。详情请参见资源弹性扩缩容。
您也可以设置最大和最小的可用资源。资源组的资源量,将根据业务负载,在您设定的范围内自动弹性扩缩容。详情请参见Interactive资源组Multi-Cluster弹性模型和配置Job型资源组的计算最大资源和最小资源。
查询的优先级调度:每个资源组拥有独立的查询优先级队列,允许您控制哪些查询优先执行。详情请参见Interactive型资源组的优先级队列与并发和Job型资源组的优先级队列。
管理工作负载:基于资源组,控制工作负载。例如,当查询执行耗时超过阈值时,将该查询投递到其他资源组重新执行,避免阻塞该资源组的其他查询。详情请参见工作负载管理。
如何使用指定资源组的资源执行查询
每个集群都有一个默认资源组USER_DEFAULT
。在没有其他资源组的情况下,所有查询都由默认资源组执行。如果您有查询的资源隔离需求,可以新建资源组,并指定不同类型的查询使用不同的资源组。
下文列举了不同方式提交XIHE SQL、Spark SQL或Spark应用时指定资源组的方法。
通过JDBC提交SQL | 通过以下三种方式指定执行查询的资源组。
资源组生效的优先级从高到低依次为Hint方式、绑定资源组、默认资源组。 |
通过作业开发页面提交Spark SQL或Spark应用 | 通过控制台作业开发页面手动选择资源组。 此时无法通过Hint、绑定资源组的方式指定资源组。 |
通过Spark-Submit工具、Notebook、SDK提交Spark应用 |
|
通过OpenAPI提交Spark应用 | 通过SubmitSparkApp接口的ResourceGroupName参数指定资源组。 |