Managed Service for Apache Spark 驱动程序节点组

Managed Service for Apache Spark NodeGroup 资源是一组执行分配角色的 Managed Service for Apache Spark 集群节点。本页介绍了驱动节点组,这是一组分配有 Driver 角色的 Compute Engine VMS,用于在 Managed Service for Apache Spark 集群上运行作业驱动程序。

何时使用驱动节点组

  • 仅当您需要在共享集群上运行多个并发作业时,才使用驱动节点组。
  • 在使用驱动节点组之前,请增加主节点资源,以避免出现驱动节点组限制

驱动程序节点如何帮助您运行并发作业

Managed Service for Apache Spark 在 Managed Service for Apache Spark 集群主服务器上为每个作业启动作业驱动程序进程。该驱动程序进程又将应用驱动程序(例如 spark-submit)作为其子进程运行。不过,在主节点上运行的并发作业数量受主节点上可用资源限制,而且由于 Managed Service for Apache Spark 主节点无法扩缩,因此当主节点资源不足以运行作业时,作业可能会失败或被限制。

驱动节点组是由 YARN 管理的特殊节点组,因此作业并发不会受到主节点资源限制。在包含驱动节点组的集群中,应用驱动程序会在驱动节点上运行。如果驱动节点有足够的资源,则每个驱动节点都可以运行多个应用驱动程序。

优势

使用包含驱动节点组的 Managed Service for Apache Spark 集群,您可以执行以下操作:

  • 横向扩展作业驱动程序资源以运行更多并发作业
  • 将驱动程序资源与工作器资源分开进行扩缩
  • 在 Managed Service for Apache Spark 2.0+ 及更高版本的映像集群上实现更快的缩容速度。在这些集群上,应用主控器会在驱动节点组中的 Spark 驱动程序内运行(默认情况下,spark.yarn.unmanagedAM.enabled 设置为 true)。
  • 自定义驱动节点启动。您可以在初始化脚本中添加 {ROLE} == 'Driver',让脚本为节点选择中的驱动节点组执行操作。

限制

  • Managed Service for Apache Spark 工作流模板中,节点组不受支持。
  • 您无法停止、重启或自动扩缩节点组集群。
  • MapReduce 应用主控器在工作器节点上运行。如果您启用了安全停用,则工作器节点的缩容速度可能会很慢。
  • 作业并发受 dataproc:agent.process.threads.job.max 集群属性影响。例如,在具有三个主节点且此属性设置为默认值 100 的情况下,集群级作业并发数量上限为 300

驱动节点组与 Spark 集群模式相比较

功能 Spark 集群模式 驱动节点组
工作器节点缩容 长期运行的驱动程序与短期运行的容器在同一工作器节点上运行,使得采用安全停用功能的工作器节点的缩容速度很慢。 当驱动程序在节点组上运行时,工作器节点会更快地缩容。
流式驱动程序输出 需要在 YARN 日志中搜索,以查找驱动程序被调度到的节点。 驱动程序输出会流式传输到 Cloud Storage,并在作业完成后显示在 Google Cloud 控制台和 gcloud dataproc jobs wait 命令输出中。

驱动节点组 IAM 权限

以下 IAM 权限与 Managed Service for Apache Spark 节点组相关操作关联。

权限 操作
dataproc.nodeGroups.create 创建 Managed Service for Apache Spark 节点组。如果用户在项目中具有 dataproc.clusters.create,则会被授予此权限。
dataproc.nodeGroups.get 获取 Managed Service for Apache Spark 节点组的详细信息。
dataproc.nodeGroups.update 调整 Managed Service for Apache Spark 节点组的大小。

驱动节点组操作

您可以使用 gcloud CLI 和 Managed Service for Apache Spark API 创建作业、获取作业、调整作业大小、删除作业以及将作业提交到 Managed Service for Apache Spark 驱动程序节点组。

创建驱动节点组集群

一个驱动节点组与一个 Managed Service for Apache Spark 集群相关联。您可以在创建 Managed Service for Apache Spark 集群的过程中创建节点组。您可以使用 gcloud CLI 或 Managed Service for Apache Spark REST API 创建包含驱动节点组的 Managed Service for Apache Spark 集群。

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --driver-pool-size=SIZE \
    --driver-pool-id=NODE_GROUP_ID

必填标志

  • CLUSTER_NAME:集群名称(在项目中必须是唯一的)。该名称必须以小写字母开头,最多可包含 51 个小写字母、数字和连字符,不能以连字符结尾。已删除集群的名称可以再次使用。
  • REGION:集群所在的区域
  • SIZE:节点组中的驱动程序节点数。所需节点数取决于作业负载和驱动程序池机器类型。最小驱动程序组节点数等于作业驱动程序所需的内存总量或 vCPU 总数除以每个驱动程序池的机器内存量或 vCPU 数。
  • NODE_GROUP_ID:可选,但建议填写。ID 在集群中必须是唯一的。在日后的操作(例如调整节点组大小)中,使用此 ID 可识别驱动程序组。如果未指定,Managed Service for Apache Spark 会生成节点组 ID。

推荐标志

  • --enable-component-gateway:添加此标志可启用 Managed Service for Apache Spark 组件网关,以便访问 YARN 网页界面。YARN 界面中的“应用”和“调度程序”页面会显示集群和作业状态、应用队列内存、核心容量以及其他指标。

其他标志:您可以将以下可选的 driver-pool 标志添加到 gcloud dataproc clusters create 命令,以自定义节点组。