最大限度地提高集群和作业的灵活性和效率

本页提供了最佳实践和调度策略,可帮助您设计弹性出色的 Managed Service for Apache Spark 集群,从而最大限度提高 Google Cloud 个区域的资源可获取性,缩短预配延迟时间,并充分利用性能和费用优化。

资源可获取性概览

在僵化的 Managed Service for Apache Spark 集群上运行作业会造成单点故障,从而导致作业中断,并因局部不可用或预配延迟而导致集群和作业失败。

如果集群配置了以下任何一种僵化的反模式,则资源不可用的风险很高:

  • 固定可用区放置:使用 zone 标志或字段对单个可用区进行硬编码,而不是允许 Managed Service for Apache Spark AutoZone 将集群动态放置在最佳可用区中。这种反模式会阻止集群创建使用相邻可用区中的可用计算资源。
  • 每个节点角色使用单一机器类型或代系:将节点角色限制为单一机器代系或类型。这种反模式会阻止集群回退到替代方案。
  • 使用较少的大型虚拟机进行纵向伸缩:纵向伸缩集群,以依赖于少量大型虚拟机类型。这种反模式会限制调度灵活性。
  • “全有或全无”的集群创建:要求所有工作器节点同时预配,而不是使用部分集群创建与自动扩缩搭配使用。如果因临时资源不可用而无法分配工作器节点,此反模式会导致集群创建失败。
  • 高峰时段安排高峰:在高峰使用时段触发大型批处理流水线,从而加剧区域争用。

资源可获取性是指将作业设计为具有硬件灵活性、多可用区性和可伸缩性。通过将集群与僵硬的配置解耦并启用多机器系列回退,您可以提高创建成功率、最大限度地缩短启动延迟时间,并始终达到 SLA。

资源可获取性建议

采用以下优化措施可提高资源可用性和作业稳定性:

使用灵活的虚拟机

借助灵活虚拟机功能,您可以为主节点、主要工作器节点和辅助工作器节点指定一个排名虚拟机类型列表。通过评估列出的虚拟机类型并自动选择具有可用容量的可用区,可以提高创建成功率。

建议:使用具有磁盘替换功能的灵活虚拟机,这样您就可以在同一集群政策中为不同的候选机器家族指定不同的磁盘类型,例如 Hyperdisk 和 Persistent Disk。您还可以在单个政策中混合使用第 2 代和第 4 代机器系列,以便在更广泛的资源池中扩缩作业,并绕过容量限制。

对于使用 N2 和 N2D 机器的作业,请考虑以下排名:

  • 等级 0:N2、N2D
  • 等级 1:N4、N4D(搭配 Hyperdisk Balanced)
  • 等级 2:C4、C4D、C3、C3D(搭配 Hyperdisk Balanced)。本地 SSD 可与 C4 和 C4D 搭配使用,但通常 8 核或 16 核机器类型仅支持 1-2 个本地 SSD。
  • 等级 3:E2(性能较低;仅在需要时使用)

例如,对于使用 n2d-standard-16 的作业,排名如下:

  • Rank 0n2d-standard-16n2-standard-16
  • 第 1 级n4-standard-16n4d-standard-16
  • Rank 2c4-standard-16c4d-standard-16c3-standard-22c3d-standard-16
  • Rank 3: e2-standard-16

使用灵活的虚拟机时,请考虑以下因素:

  • 混合磁盘类型支持:第 3 代和第 4 代机器类型仅支持 Hyperdisk 磁盘类型,不支持永久性磁盘类型。在混合使用第 2 代和第 4 代时,请在 instanceFlexibilityPolicy 中为每个实例选择指定 diskConfig。如需了解详情,请参阅磁盘替换

  • 资源配额:当您定义具有回退类型的灵活虚拟机政策时,Compute Engine 会检查该区域中所有候选类型和磁盘的配额。确保您的项目已为所有配置的项目分配足够的计算和磁盘配额。

  • Compute Engine 折扣:利用灵活的承诺使用折扣 (CUD),在多个虚拟机系列和区域中实现基于支出的节省。

  • 价格:使用Google Cloud 价格计算器比较政策中每个等级的费用。

如需查看配置模板和部署示例,请参阅:

使用自动选择地区功能

使用 AutoZone 放置,让 Managed Service for Apache Spark 选择最佳可用区来预配资源。如果您使用自定义虚拟私有云 (VPC) 网络,请确保子网在所有区域性可用区中都有足够的 IP 地址。

使用较小的机器配置

设计作业时,应考虑在较小的机器类型(4、8 或 16 个核心)上进行横向伸缩,而不是使用较大的虚拟机进行纵向伸缩。较小的虚拟机大小在各可用区中具有更高的可用性,有助于防止创建延迟。

  • 检查并重新设计使用大型机器类型作为驱动程序节点的作业。
  • 查看仅运行驱动程序节点而不运行工作器节点的作业(单节点集群)。在单节点集群上运行的作业无法动态扩容,并且执行绑定到单个物理主机。

使用集群自动扩缩

使用集群自动扩缩功能,并设置足够的实例数上限,以管理资源可变(峰值)作业的容量。

将部分集群创建与自动扩缩搭配使用

部分集群创建与自动扩缩功能搭配使用,以便指定主要工作器的最小数量。如果集群启动时的工作器数量少于请求的数量,则在资源可用后,自动扩缩功能可以动态添加更多工作器。

在非高峰时段安排作业

在非高峰时段(例如中午和周末)安排作业。安排在非标准时间(例如 10:07 而不是 10:00),以避免出现安排高峰。

后续步骤