什么是 Microsoft Fabric 中的 Apache Spark 计算?

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

Microsoft Fabric 数据工程和数据科学体验基于完全托管的 Apache Spark 计算平台运行。 该平台经过设计,可提供无与伦比的速度和效率。 使用初学者池时,有望快速初始化 Apache Spark 会话,通常在 5 到 10 秒内完成,无需手动设置。 还可以根据特定的数据工程和数据科学要求灵活地自定义 Apache Spark 池。 该平台可实现优化和定制的分析体验。

带有入门池和自定义 Spark 池的 Spark 计算平台的图像。

初学者池

初学者池提供了一种快速简便的方法,让你在数秒内即可在 Microsoft Fabric 平台上使用 Spark。 你可以立即使用 Spark 会话,而不是等待 Spark 为你设置节点,这有助于对数据执行更多操作并更快获取见解。

显示初学者池配置的表的图像。

初学者池具有始终处于打开状态且可随时处理请求的 Apache Spark 群集。 它们使用根据 Spark 作业需求动态纵向扩展的中型节点。

此示意图显示初学者池的大体设计。

初学者池还具有默认设置,可让你在不减慢会话启动时间的情况下快速安装库。 但是,如果要使用工作区或容量设置中的额外自定义 Apache Spark 属性或库,Spark 可能需要更长的时间才能获取节点。 在计费和容量消耗方面,在开始执行笔记本或 Apache Spark 作业定义时,需要为容量消耗付费。 群集在池中处于空闲状态的时间不收费。

此示意图显示初学者池计费的大致阶段。

例如,如果将笔记本作业提交到初学者池,则仅需为笔记本会话处于活动状态的时间段付费。 计费时间不包括空闲时间,也不包括使用 Spark 上下文对会话进行个性化设置所需的时间。

Spark 池

可以通过 Spark 池指示 Spark 需要哪种类型的资源来执行数据分析任务。 可以为 Spark 池命名,并选择节点(执行工作的计算机)的数量和大小。 还可以指示 Spark 如何根据工作量调整节点数。 Spark 池免费创建;只需为在池中运行 Spark 作业的时段付费,然后 Spark 将为你设置节点。

如果在会话过期后 2 分钟内未使用 Spark 池,则会解除分配 Spark 池。 此默认会话过期时间段设置为 20 分钟,可以根据需要进行更改。 如果你是工作区管理员,还可以为工作区创建自定义 Spark 池,并使其成为其他用户的默认选项。 这样可以节省时间,并避免在每次运行笔记本或 Spark 作业时设置新的 Spark 池。 自定义 Spark 池大约需要三分钟才能启动,因为 Spark 必须从 Azure 获取节点。

甚至可以通过将最小节点数设置为 1 来创建单节点 Spark 池,在这种情况下,驱动程序和执行程序将在附带可还原 HA 且适用于小型工作负载的单个节点中运行。

自定义 Spark 池中可以具有的节点的大小和数量取决于 Microsoft Fabric 容量。 容量是对 Azure 中可以使用的计算能力的衡量标准。 一种思考方式是,两个 Apache Spark VCore(Spark 的计算能力单位)等于一个容量单位。 例如,结构容量 SKU F64 有 64 个容量单位,相当于 128 个 Spark VCore。 可以使用这些 Spark VCore 为自定义 Spark 池创建不同大小的节点,前提是 Spark VCore 总数不超过 128。

Spark 池的计费方式与初学者池类似,除非为运行笔记本或 Spark 作业定义创建了活动 Spark 会话,否则无需为已创建的自定义 Spark 池付费。 只需为作业运行的时间付费。 无需为作业完成后的群集创建和分配解除等阶段付费。

此示意图显示自定义者池计费的大致阶段。

例如,如果将笔记本作业提交到自定义 Spark 池,则仅对会话处于活动状态的时间段收费。 Spark 会话停止或过期后,对该笔记本会话的计费将停止。 从云中获取群集实例所花费的时间或初始化 Spark 上下文所花费的时间无需付费。

F64 的可能自定义池配置基于前面的示例:

Fabric 容量 SKU 容量单位 Spark VCore 节点大小 最大节点数
F64 64 384 小型 96
F64 64 384 48
F64 64 384 大型 24
F64 64 384 X-大 12
F64 64 384 XX-Large 6

注意

若要创建自定义池,需要具备工作区的管理员权限。 Microsoft Fabric 容量管理员必须授予相应权限,以允许工作区管理员调整其自定义 Spark 池的大小。 若要了解详细信息,请参阅 Fabric 中的自定义 Spark 池入门

节点

Apache Spark 池实例由一个头节点和两个或更多个工作器节点组成,一个 Spark 实例中至少有三个节点。 头节点运行额外的管理服务,例如 Livy、Yarn 资源管理器、Zookeeper 和 Apache Spark 驱动程序。 所有节点都运行节点代理和 Yarn 节点管理器等服务。 所有工作器节点都运行 Apache Spark 执行程序服务。

节点大小

可以使用不同的节点大小来定义 Spark 池,大小范围从具有 4 个 vCore 和 32 GB 内存的小型计算节点,到每个节点具有 64 个 vCore 和 512 GB 内存的双超大型计算节点。 创建池后可以更改节点大小,但必须重新启动活动会话。

大小 vCore 内存
4 32 GB
中型 8 64 GB
16 128 GB
X-大 32 256 GB
XX-Large 64 512 GB

自动缩放

使用 Apache Spark 池的自动缩放,可以根据活动量自动纵向扩展和缩减计算资源。 启用自动缩放功能时,请设置要缩放的节点的最小和最大数目。 禁用自动缩放功能后,设置的节点数将固定不变。 可以在创建池后更改此设置,但可能需要重启实例。

注意

默认情况下,spark.yarn.executor.decommission.enabled 设置为 true,因此未充分利用的节点会自动关闭以优化计算效率。 如果需要不太积极的纵向缩减,可以将此配置设置为 false

动态分配

如果任务超过当前执行程序可以承受的负载,动态分配将允许 Apache Spark 应用程序请求更多执行程序。 它还会在作业完成以及 Spark 应用程序进入空闲状态时释放执行程序。 企业用户经常发现很难优化执行程序配置,因为它们在 Spark 作业执行过程的不同阶段大不相同。 这些配置还取决于处理的数据量,后者会不时更改。 可以在池配置中启用“执行程序的动态分配”选项,这会根据 Spark 池中的可用节点自动将执行程序分配给 Spark 应用程序。

如果为每个提交的 Spark 应用程序启用动态分配选项,系统会在作业提交步骤期间根据最小节点数保留执行程序。 需要指定用于支持成功的自动缩放方案的最大节点数。