使用动态工作负载调度器

您可以使用动态工作负载调度器 (DWS) 灵活启动模式,提高 Managed Service for Apache Spark 批处理工作负载获取稀缺 GPU 资源的几率。

概览

动态工作负载调度器是一种可感知容量的调度器,可在全球范围内管理稀缺的计算资源。在灵活启动模式下,如果由于区域缺货而无法立即使用 GPU,Managed Service for Apache Spark 可以将您的请求排队等待一段时间(可配置)。

对于提交到 Managed Service for Apache Spark Spark 运行时版本 3.0+ 的所有启用 GPU 的工作负载,灵活启动是默认行为。当资源不可用时,系统会将请求排队,而不是因资源不足而失败。获得容量后,DWS 会在执行开始之前“一次性”预配整个集群。如需了解详情,请参阅动态工作负载调度程序简介

优势

  • 提高了可用性:大幅减少了因 GPU 容量暂时不足而导致的作业失败。
  • 原子级配置:将集群工作器作为单个单元进行配置,确保集群完整性,并防止仅创建部分工作器的情形。
  • 默认可靠性:无需手动配置参数即可改进资源获取。

配额要求

如需使用 DWS 灵活启动,您的项目必须具有足够的配额:

  • 抢占式 GPU 配额:DWS Flex Start 会使用 GPU 配额池的抢占式版本,而不是标准版本(例如 PREEMPTIBLE_NVIDIA_L4_GPUS)。如需了解详情,请参阅 Managed Service for Apache Spark 资源配额
  • 本地 SSD 配额:将 performance 存储类别与 GPU 加速机器搭配使用时,Managed Service for Apache Spark 会预配本地 SSD,以实现高速 shuffle 和临时存储。您的项目必须在目标区域中具有足够的本地 SSD 配额。

配置

对于运行时版本为 3.0 及更高版本的 GPU 工作负载,DWS 灵活启动功能默认处于启用状态。您可以使用以下 Spark 属性自定义超时时间或停用该功能:

属性 说明 默认
spark.dataproc.[driver|executor].provisioning.mode 指定配置模型。使用 queue 表示 DWS 灵活启动(GPU 的默认设置),或使用 default 停用 DWS 并使用按需预配。 queuedefault queue(适用于 3.0 及更高版本上的 GPU)
spark.dataproc.[driver|executor].provisioning.allocationTimeout 节点池在队列中等待容量的最长时长。默认值为 1 小时 (3600s),最大值为 2 小时 (7200s)。注意:值必须以“s”后缀结尾 时长(以秒为单位,例如 1800s 3600s

示例:使用 DWS 灵活启动的 GPU 批量工作负载

以下示例展示了如何使用 NVIDIA L4 GPU 提交 PySpark 批量作业。由于 DWS Flex Start 默认处于有效状态,因此该命令会为驱动程序和执行器设置 30 分钟 (1800s) 的排队超时时间:

gcloud dataproc batches submit pyspark \
    gs://my-bucket/path/to/your-script.py \
    --project="PROJECT_ID" \
    --region="REGION" \
    --version="3.0" \
    --properties="spark.dataproc.driver.resource.accelerator.type=l4,\
spark.dataproc.driver.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.resource.accelerator.type=l4,\
spark.dataproc.executor.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.compute.tier=premium,\
spark.dataproc.executor.disk.tier=premium"