Apache Spark for Microsoft Fabric 中的并发限制和队列

适用于: Microsoft Fabric 中的数据工程和数据科学

Microsoft Fabric 允许通过容量分配计算单位,即一组在给定时间可用的专用资源。 容量定义资源执行活动或生成输出的能力。 不同项在特定时间消耗不同的容量。 Microsoft Fabric 通过 Fabric SKU 和试用版提供容量。 有关详细信息,请参阅什么是容量?

用户在 Azure 上创建 Microsoft Fabric 容量时,可以根据其分析工作负载大小选择容量大小。 在 Apache Spark 中,用户为每个预留的容量单位获得两个 Apache Spark VCore 作为其 SKU 的一部分。

一个容量单位 = 两个 Spark VCore

购买容量后,管理员可以在 Microsoft Fabric 中的容量中创建工作区。 与容量关联的 Spark VCore 在基于 Apache Spark 的所有项(如笔记本、Apache Spark 作业定义和在这些工作区中创建的湖屋)之间共享。

并发限制和队列

Spark for Fabric 实施基于核心的限制和排队机制,在该机制下,用户可以根据购买的 Fabric 容量 SKU 提交作业。 队列机制是基于 FIFO 的简单队列,用于检查可用的作业槽,并在容量可用后自动重试作业。 当用户由于使用他们购买的 Fabric 容量 SKU 可用的所有 Spark vCore 导致其容量达到利用率上限,当用户提交笔记本或湖屋作业(例如,加载到表)时,它们会受到限制,并显示消息

HTTP 响应代码 430:无法运行此 Spark 作业,因为已达到 Spark 计算或 API 速率限制。 要运行此 Spark 作业,请通过监视中心取消活动的 Spark 作业,或者选择容量更大的 SKU,或者稍后重试。

启用队列后,从管道和 Job Scheduler 以及 Spark 作业定义触发的笔记本作业将添加到队列中,并在释放容量时自动重试。 队列到期时间设置为从作业提交时间起 24 小时。 在此时间段后,需要重新提交作业。

Fabric 容量启用了突发功能,使你能够使用超出购买量的额外计算核心,以加快工作负载的执行速度。 对于 Apache Spark 工作负载,突发功能允许用户使用总共为购买量 3 倍的 Spark VCore 来提交作业。

注意

突发因子只会增加 Spark VCore 总数,以帮助实现并发,但不会增加每个作业的最大内核数。 如果某个作业需要的核心数超出用户的 Fabric 容量提供的核心数,则用户无法提交该作业。

以下部分列出了基于 Microsoft Fabric 容量 SKU 的 Spark 工作负载的各种基于核心的限制:

Fabric 容量 SKU 等效的 Power BI SKU Spark VCore 具有突发因子的最大 Spark VCore 数 队列限制
F2 - 4 20 4
F4 - 8 24 4
F8 - 16 48 8
F16 - 32 96 16
F32 - 64 192 32
F64 P1 128 384 64
F128 P2 256 768 128
F256 P3 512 1536 256
F512 P4 1024 3072 512
F1024 - 2048 6144 1024
F2048 - 4096 12288 2048
试用容量 P1 128 128 NA

示例计算:F64 SKU 提供 128 个 Spark VCore。 F64 SKU 应用的突发因子是 3,Spark VCore 总数为 384 个。 突发因子仅用于帮助并发,并且不会增加单个 Spark 作业可用的最大核心数。 这意味着单个笔记本或 Spark 作业定义或湖屋作业可以使用最多包含 128 个 vCore 的池配置,其中可以并发运行 3 个配置相同的作业。 如果笔记本使用的计算配置较小,则可以并发运行直到达到 384 个 SparkVcore 的利用率上限。

注意

这些作业的队列过期时限为 24 小时,之后会被取消,用户必须重新提交它们才能执行作业。

Spark for Fabric 限制没有强制实施基于作业的任意限制,限制仅基于所购买的 Fabric 容量 SKU 允许的核心数。 默认情况下,作业许可采用乐观许可控制方法,根据最低核心要求来许可作业。 要详细了解乐观作业许可,请参阅作业许可和管理。如果为工作区选择了默认池(入门池)选项,其最大并发作业限制详见下表。

详细了解基于 Fabric 容量 SKU 的默认入门池配置:配置入门池

作业级突发

管理员可以配置其 Apache Spark 池,以利用整个容量可用的具有突发因子的最大 Spark 核心。 例如,将工作区附加到 F64 Fabric 容量的工作区管理员现在可以将 Spark 池(入门池或自定义池)配置为 384 个 Spark VCore,其中入门池的最大节点数可以设置为 48 个,或者管理员可以设置具有 6 个最大节点的 XX 大型节点大小池。