在创建 Managed Service for Apache Spark 集群后,您可以通过增加或减少集群中的主工作器或辅助工作器节点的数量(横向伸缩)来调整(“伸缩”)集群。即使作业正在 Managed Service for Apache Spark 集群上运行,您也可以随时扩缩该集群。您无法更改现有集群的机器类型(纵向伸缩)。如需进行纵向扩缩,请使用受支持的机器类型, 然后将作业迁移到新集群。
您可以扩缩 Managed Service for Apache Spark 集群,以实现以下目的:
- 增加工作器的数量,以使作业更快运行。
- 减少工作器的数量,以节省资金(请参阅安全停用,通过此方式缩小集群可避免丢失正在进行的工作)。
- 增加节点数量以扩展可用的 Hadoop 分布式文件系统 (HDFS) 存储空间。
由于集群可以扩缩多次,因此,您可能需要在某个时间增加或减小集群大小,日后再减小或增加其大小。
使用伸缩
您可以通过以下三种方式扩缩 Managed Service for Apache Spark 集群:
- 使用
gcloud命令行工具在 gcloud CLI 中。 - 在 Google Cloud 控制台中修改集群配置。
- 使用 REST API。
添加到集群的新工作器将使用与现有工作器相同的机器类型。例如,如果集群是通过使用 n1-standard-8 机器类型的工作器创建的,则新工作器也将使用 n1-standard-8 机器类型。
您可以扩缩主要工作器或辅助(抢占式)工作器的数量,或者同时扩缩两者。例如,如果您只扩缩抢占式工作器的数量,主要工作器的数量将保持不变。
gcloud
如需使用gcloud dataproc clusters update 创建集群,请运行以下命令:
gcloud dataproc clusters update cluster-name \ --region=region \ [--num-workers and/or --num-secondary-workers]=new-number-of-workers
gcloud dataproc clusters update dataproc-1 \
--region=region \
--num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
masterDiskConfiguration:
bootDiskSizeGb: 500
masterName: dataproc-1-m
numWorkers: 5
...
workers:
- my-test-cluster-w-0
- my-test-cluster-w-1
- my-test-cluster-w-2
- my-test-cluster-w-3
- my-test-cluster-w-4
...
REST API
请参阅 clusters.patch。
示例
PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
"config": {
"workerConfig": {
"numInstances": 4
},
"secondaryWorkerConfig": {
"numInstances": 2
}
},
"labels": null
}
控制台
创建集群后,您可以通过以下方式扩缩集群:在 Google Cloud 控制台集群页面中打开集群的集群详细信息页面,然后点击配置标签页上的修改按钮。
为工作器节点和/或抢占式工作器节点的数量输入一个新值(在下面的屏幕截图中分别更新为“5”和“2”)。
点击 保存 以更新集群。
Managed Service for Apache Spark 如何选择要移除的集群节点
对于使用映像版本 1.5.83+、 2.0.57+和 2.1.5+创建的集群,在缩减集群时,Managed Service for Apache Spark 会先移除无效、不健康和空闲的节点,然后移除运行 YARN 应用主节点和运行容器最少的节点,以尽量减少移除节点对正在运行的 YARN 应用的影响。
安全停用
当您缩小集群时,正在进行的工作可能未完成便会停止 。如果您使用 Managed Service for Apache Spark 版本 1.2 或更高版本, 则可以使用安全停用功能,它整合了 YARN 节点的安全停用 ,可以先完成工作器上正在进行的工作,然后再从 Cloud Managed Service for Apache Spark 集群中移除相应工作器。
安全停用和辅助工作器
即使集群伸缩操作已标记为完成,抢占式(辅助)工作器组仍会继续预配或删除工作器,以便达到预期的大小。如果尝试安全停用辅助工作器
并收到类似于以下内容的错误消息:
"不能在 Managed Service for Apache Spark 之外修改辅助工作组。如果您最近创建或更新了此集群,请在安全停用之前等待几分钟,以便所有辅助实例加入或离开集群。
预期的辅助工作器组大小:x,实际大小:y”,
请等待几分钟,然后再次发出安全停用请求。
使用安全停用功能
Managed Service for Apache Spark 安全停用功能整合了 YARN 节点的安全停用 ,可以先完成工作器上正在进行的工作,然后再从 Cloud Managed Service for Apache Spark 集群中移除相应工作器。系统默认会停用安全停用功能。要启用该功能,您可以在更新集群以移除一个或多个工作器时设置超时值。
gcloud
在更新集群以移除一个或多个工作器时,请使用带有--graceful-decommission-timeout 标志的 gcloud dataproc clusters update 命令。超时(字符串)值可以为“0s”(默认值;强制停用,并非安全停用)或相对于当前时间的正时长(例如“3s”)。
最长时长为 1 天。
gcloud dataproc clusters update cluster-name \ --region=region \ --graceful-decommission-timeout="timeout-value" \ [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \ ... other args ...
REST API
请参阅 clusters.patch.gracefulDecommissionTimeout。超时(字符串)值可以为“0”(默认值;强制停用,并非安全停用)或以秒为单位的时长(例如,“3s”)。最长时长为 1 天。控制台
创建集群后,您可以通过以下方式选择安全停用集群:在 Google Cloud 控制台集群页面中打开集群的集群详细信息页面,然后点击配置标签页上的修改按钮。
在安全停用部分中,选择使用安全停用,然后选择超时值。
点击保存以更新集群。
取消安全停用缩减操作
在使用映像版本
2.0.57+
或 2.1.5+创建的 Managed Service for Apache Spark 集群上,您可以运行 gcloud dataproc operations cancel
命令或发出 Managed Service for Apache Spark API
operations.cancel
请求,以取消安全停用缩减操作。
取消安全停用缩减操作时:
处于
DECOMMISSIONING状态的工作器会在操作取消完成时重新启用并变为ACTIVE。如果缩减操作包含标签更新,则更新可能不会生效。
如需验证取消请求的状态,您可以
运行 gcloud dataproc operations describe
命令或发出 Managed Service for Apache Spark API
operations.get
请求。如果取消操作成功,则内部操作状态会标记为 CANCELLED。