适用于:✅Microsoft Fabric 中的数据工程和数据科学
Microsoft Fabric 数据工程和数据科学体验基于完全托管的 Apache Spark 计算平台运行。 该平台经过设计,可提供无与伦比的速度和效率。 使用初学者池时,有望快速初始化 Apache Spark 会话,通常在 5 到 10 秒内完成,无需手动设置。 还可以根据特定的数据工程和数据科学要求灵活地自定义 Apache Spark 池。 该平台可实现优化和定制的分析体验。 简言之,初学者池是使用预配置的 Spark 的快速方法,而 Spark 池提供自定义和灵活性。
初学者池
初学者池提供了一种快速简便的方法,让你在数秒内即可在 Microsoft Fabric 平台上使用 Spark。 你可以立即使用 Spark 会话,而不是等待 Spark 为你设置节点,这有助于对数据执行更多操作并更快获取见解。
初学者池具有 Apache Spark 群集,这些群集的会话始终处于打开状态并可供请求使用。 它们使用根据 Spark 作业需求动态纵向扩展的中型节点。
在没有 任何额外的库依赖项或自定义 Spark 属性的情况下使用初学者池时,会话通常在 5 到 10 秒内启动。 这种快速启动是可能的,因为群集已在运行,不需要预配时间。
注意
对于中等节点大小,仅支持初学者池,且选择任何其他节点大小或自定义计算配置将导致按需会话启动体验,这可能需要 2 - 5 分钟
但是,在某些情况下,会话可能需要更长的时间才能启动:
你有自定义库或 Spark 属性
如果在环境中配置了库或自定义设置,Spark 必须在创建会话后对其进行个性化设置。 此过程可以向启动时间添加大约 30 秒到 5 分钟 ,具体取决于库依赖项的数量和大小。您所在区域的启动池已全部使用完毕
在极少数情况下,由于流量过高,某一区域的初学者池可能会暂时耗尽。 发生这种情况时,Fabric 会启动 一个新群集 来适应你的请求,这大约需要 2 到 5 分钟。 新群集可用后,会话将启动。 如果还需要安装自定义库,您需要为安装个性化设置的过程额外增加 30 秒到 5 分钟 的时间。高级网络或安全功能(专用链接或托管 VNet)
如果您的工作区具有网络功能(例如 租户专用链接 或 托管 VNet),则不支持入门级池。 在这种情况下,Fabric 必须按需创建群集,这会在会话开始时间中添加 2 到 5 分钟 。 如果你还有库依赖项,该个性化步骤可能会再次增加 30 秒到 5 分钟。
下面是一些演示潜在开始时间的示例方案:
情景 | 典型启动时间 |
---|---|
默认设置,无库 | 5 – 10 秒 |
默认设置 + 库依赖项 | 5 - 10 秒 + 30 秒 - 5 分钟 (对于库设置) |
区域交通繁忙,但没有图书馆 | 2 – 5 分钟 |
高流量 + 库依赖项 | 2 – 5 分钟 + 30 秒 – 5 分钟(用于图书馆) |
网络安全(专用链接/VNet),无库 | 2 – 5 分钟 |
网络安全 + 库依赖项 | 2 – 5 分钟 + 30 秒 – 5 分钟(针对图书馆) |
在计费和容量消耗方面,在开始执行笔记本或 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 的计算能力单位)等于一个容量单位。
注意
在 Apache Spark 中,用户为每个预留的容量单位获得两个 Apache Spark VCore 作为其 SKU 的一部分。 一个容量单位 = 两个 Spark VCore,因此 F64 => 128 个 Spark VCore,并应用 3 倍突发乘数,总共提供 384 个 Spark VCore
例如,Fabric 容量 SKU F64 有 64 个容量单位,相当于 384 个 Spark VCore(64 * 2 * 3X 突发乘数)。 可以使用这些 Spark VCore 为自定义 Spark 池创建不同大小的节点,前提是 Spark VCore 总数不超过 384。
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-大 | 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-大 | 64 | 512 GB |
注意
仅允许非试用版 Fabric SKU 使用“X-大”和“XX-大”节点大小。
自动缩放
使用 Apache Spark 池的自动缩放,可以根据活动量自动纵向扩展和缩减计算资源。 启用自动缩放功能时,请设置要缩放的节点的最小和最大数目。 禁用自动缩放功能后,设置的节点数将固定不变。 可以在创建池后更改此设置,但可能需要重启实例。
注意
默认情况下,spark.yarn.executor.decommission.enabled 设置为 true,因此未充分利用的节点会自动关闭以优化计算效率。 如果需要不太积极的纵向缩减,可以将此配置设置为 false
动态分配
如果任务超过当前执行程序可以承受的负载,动态分配将允许 Apache Spark 应用程序请求更多执行程序。 它还会在作业完成以及 Spark 应用程序进入空闲状态时释放执行程序。 企业用户经常发现很难优化执行程序配置,因为它们在 Spark 作业执行过程的不同阶段大不相同。 这些配置还取决于处理的数据量,后者会不时更改。 可以在池配置中启用“执行程序的动态分配”选项,这会根据 Spark 池中的可用节点自动将执行程序分配给 Spark 应用程序。
如果为每个提交的 Spark 应用程序启用动态分配选项,系统会在作业提交步骤期间根据最小节点数保留执行程序。 需要指定用于支持成功的自动缩放方案的最大节点数。