DLI弹性资源池与队列简介
DLI的计算资源是执行作业的基础,本节内容介绍DLI计算资源的模式和队列类型。
视频简介
视频介绍DLI计算资源类型。
什么是弹性资源池和队列?
在了解DLI计算资源模式前首先了解弹性资源池和队列的基本概念。
- 弹性资源池
弹性资源池是DLI计算资源的一种池化管理模式,可以看作DLI计算资源的集合。DLI支持在弹性资源池中创建多个队列,且这些队列可以共享弹性资源池中的资源。
了解弹性资源池的产品规格请参考弹性资源池产品规格。
了解更多弹性资源池的优势请参考弹性资源池的优势。
- 弹性资源池的物理资源层由分布在不同可用区的计算节点组成、支持跨AZ高可用。
- 同一资源池内的多个队列共享物理资源,但通过逻辑隔离保障资源分配策略(如优先级、配额)。
- 弹性资源池可以根据队列负载实时调整资源,实现分钟级按需弹性伸缩。
- 弹性资源池能够同时支持SQL作业、Spark作业、Flink作业,具体支持的作业类型取决于在弹性资源池中创建的队列类型。
- 队列
队列是DLI中被实际使用和分配的基本单元,即队列是执行作业所需的具体的计算资源。您可以为不同的作业或数据处理任务创建不同的队列,并按需对这些队列分配和调整资源。
DLI分为三种队列类型: default队列、SQL队列、通用队列,您可以根据业务场景和作业特性选择最合适的队列类型。
- default队列:
DLI服务预置的队列,所有用户共享。
不支持指定default队列资源大小,资源在执行作业时按需分配,并按实际扫描的数据量计费。
由于default队列是共享资源,在使用时可能会出现资源抢占的情况,不能保证每次都能获得资源来执行作业。
default队列适用小规模或临时的数据处理需求。对于重要的或需要保证资源的作业,建议购买弹性资源池并在弹性资源池中创建队列来执行作业。
- SQL队列:
SQL队列是用于执行SQL作业的队列,支持指定引擎类型包括Spark和HetuEngine。
SQL队列适用于需要快速数据查询和分析,以及需要定期清理缓存或重置环境的业务。
- 通用队列:
通用队列用于执行Spark作业、Flink OpenSource SQL作业和Flink Jar作业的队列。
适合适用于复杂数据处理、实时数据流处理或批量数据处理的场景。
- default队列:

DLI弹性资源池之间为物理集群隔离,同一个弹性资源池中的队列之间为逻辑隔离。
建议您对测试业务场景和生产业务场景分别创建弹性资源池,通过资源物理隔离的方式,保障资源管理的独立性和安全性。
DLI计算资源模式
DLI提供了三种计算资源的管理模式,每一种模式都有独特的优势和适用场景。

- 弹性资源池模式:
计算资源的池化管理模式,提供计算资源的动态扩缩容能力,同一弹性资源池中的队列共享计算资源。通过合理设置队列的计算资源分配策略,可以提高计算资源利用率,应对业务高峰期的资源需求。
- 适用场景:适合业务量有明显波动的场合,如周期性的数据批处理任务或实时数据处理需求。
- 支持的队列类型:SQL队列(Spark)、SQL队列(HetuEngine)、通用队列。了解DLI的队列类型请参考队列类型。
弹性资源池模式的通用队列和SQL队列不支持跨可用区。
- 使用方法:先创建弹性资源池,然后在弹性资源池中创建队列并分配计算资源,队列关联到具体的作业和数据处理任务。
购买弹性资源池并在弹性资源池中添加队列的具体操作步骤请参考创建弹性资源池并添加队列。
- 全局共享模式:
全局共享模式是一种根据SQL查询中实际扫描的数据量来分配计算资源的模式,不支持指定或预留计算资源。
DLI服务预置的“default”队列即为全局共享模式的计算资源,资源的大小是按需分配的。在不确定数据量大小或偶尔需要进行数据处理的用户,可以使用default队列执行作业。
- 非弹性资源池模式(废弃,不推荐使用):
DLI的上一代计算资源管理方式,因缺乏灵活性,目前已不推荐使用。
非弹性资源池模式提供固定规格的计算资源,购买后独占资源,无法根据需求动态调整,可能会导致资源浪费或在需求高峰期资源不足。
为了方便您理解DLI不同计算资源模式的适用场景,我们把购买DLI计算资源比作用车服务:
弹性资源池产品规格
弹性资源池为DLI作业运行提供所需的计算资源(CPU和内存)。弹性资源池的单位为CU,1CU包含1CPU和4GB内存。
您可以在弹性资源池中创建多个队列, 队列之间的计算资源支持共享。 通过合理设置队列的计算资源池分配策略,提高计算资源利用率。

DLI弹性资源池之间为物理集群隔离,同一个弹性资源池中的队列之间为逻辑隔离。
建议您对测试业务场景和生产业务场景分别创建弹性资源池,通过资源物理隔离的方式,保障资源管理的独立性和安全性。
DLI提供的弹性资源池规格如表2所示。
类型 |
规格 |
约束限制 |
适用场景 |
---|---|---|---|
基础版 |
16-64CUs规格 |
其他弹性资源池使用相关约束限制请参考弹性资源池使用约束限制。 |
适用于对资源消耗不高、对资源高可靠性和高可用性要求不高的测试场景。 |
标准版 |
64CUs及以上规格 |
弹性资源池使用相关约束限制请参考弹性资源池使用约束限制。 |
具备强大的计算能力、高可用性、及灵活的资源管理能力,适用于大规模计算任务场景和有长期资源规划需求的业务场景。 |
弹性资源池的优势
图2是弹性资源池的架构图。弹性资源池的优势主要体现在以下几个方面:
- 统一资源管理
- 统一管理内部多集群和调度作业,规模可以到百万核级别。
- 多AZ部署,支持跨AZ高可用。
- 租户资源隔离
不同队列之间资源隔离,减少队列之间的相互影响。
- 分时按需弹性
- 分钟级别扩缩容,从容应对流量洪峰和资源诉求。
- 支持分时设置队列优先级和配额,提高资源利用率。
- 作业级资源隔离(暂未实现,后续版本支持)
支持独立Spark实例运行SQL作业,减少作业间相互影响。
- 自动弹性(暂未实现,后续版本支持)
基于队列负载和优先级实时自动更新队列配额。
弹性资源池解决方案主要解决了以下问题和挑战。
维度 |
原有队列,无弹性资源池时 |
弹性资源池 |
---|---|---|
扩容时长 |
手工扩容时间长,扩容时长在分钟级别 |
不需要手工干预,秒级动态扩容。 |
资源利用率 |
不同队列之间资源不能共享。 例如:队列1当前还剩余10CU资源,队列2当前负载高需要扩容时,队列2不能使用队列1中的资源,只能单独对队列2进行扩容。 |
添加到同一个弹性资源池的多个队列,CU资源可以共享,达到资源的合理利用。 |
配置跨源时,必须为每个队列分配不重合的网段,占用大量VPC网段。 |
多队列通过弹性资源池统一进行网段划分,减少跨源配置的复杂度。 |
|
资源调配 |
多个队列同时扩容时不能设置优先级,在资源不够时,会导致部分队列扩容申请失败。 |
您可以根据当前业务波峰和波谷时间段,设置各队列在弹性资源池中的优先级,保证资源的合理调配。 |
弹性资源池使用场景
推荐使用弹性资源池队列,提高资源使用的灵活性和资源利用效率。本节介绍常见的弹性资源池的使用场景。
场景一:固定资源造成资源浪费和资源不足的场景
在每天的不同时段,作业任务对资源的请求量也会发生变化,如果采用固定资源规格则会导致资源浪费或者资源不足的问题。例如,如下图图3示例可以看出:
- 大约在凌晨4点到7点这个数据段,ETL作业任务结束后没有其他作业,因为资源固定一直占用,导致严重的资源浪费。
- 上午9点到12点以及下午14点16点的两个时段,ETL报表和作业查询的请求量很高,因为当前固定资源不够,导致作业任务排队,任务一直排队。
场景二:资源相互隔离,没有共享,造成资源浪费的场景

弹性资源池通过“分时按需弹性”功能,支持按照不同时间段对资源进行动态的扩缩容,保证资源的利用率和应对资源洪峰等诉求。
弹性资源池对后端资源统一进行管理和调度,多个队列绑定弹性资源池后,资源池内资源共享,资源利用率高,解决了场景二的问题。