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 命令,以自定义节点组。