在创建 Dataproc 集群后,您可以通过增加或减少集群中的主要或辅助工作器节点的数量(横向伸缩)来调整(“伸缩”)集群。即使作业正在 Dataproc 集群上运行,您也可以随时扩缩该集群。您无法更改现有集群的机器类型(垂直伸缩)。如需纵向扩容,请使用受支持的机器类型创建集群,然后将作业迁移到新集群。
为何要扩缩 Dataproc 集群?
- 增加工作器的数量,以使作业更快运行
- 减少工作器的数量,以节省资金(请参阅安全停用,通过此方式缩小集群可避免丢失正在进行的工作)。
- 增加节点数量以扩展可用的 Hadoop 分布式文件系统 (HDFS) 存储空间
由于集群可以扩缩多次,因此,您可能需要在某个时间增加/减小集群大小,日后再减小/增加其大小。
使用扩缩功能
您可以通过三种方式扩缩您的 Dataproc 集群:
- 使用 gcloud CLI 中的
gcloud
命令行工具。 - 在 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”)。 点击保存以更新集群。Dataproc 如何选择要移除的集群节点
在使用映像版本 1.5.83+、2.0.57+ 和 2.1.5+ 创建的集群中,缩减集群时,Dataproc 会先移除未活跃、不健康和空闲的节点,然后移除运行 YARN 应用主副本和正在运行的容器数量最少的节点,以尽量减少移除节点对正在运行的 YARN 应用的影响。
安全停用
当您缩小集群时,正在进行的工作可能未完成便会停止。如果您使用的是 Dataproc 版本 1.2 或更高版本,则可以使用“安全停用功能”,其中整合了 YARN 节点的安全停用,可以先完成工作器上正在进行的工作,然后再从 Cloud Dataproc 集群中移除相应工作器。
安全停用和辅助工作器
即使集群扩缩操作已标记为完成,抢占式(辅助)工作器组仍会继续预配或删除工作器,以便达到预期的大小。如果尝试安全停用辅助工作器并收到类似于以下内容的错误消息:
“不能在 Dataproc 之外修改辅助工作组。如果您最近创建或更新了此集群,请在安全停用之前等待几分钟,以便所有辅助实例加入或离开集群。
预期的辅助工作器组大小:x,实际大小:y”,
请等待几分钟,然后再次发出安全停用请求。
另请注意:
- 您可以随时强制停用抢占式工作器。
- 您可以随时安全停用主要工作器。
使用安全停用
Dataproc 安全停用功能整合了 YARN 节点的安全停用,可以先完成工作器上正在进行的工作,然后再从 Cloud Dataproc 集群中移除相应工作器。系统默认会停用安全停用功能。要启用该功能,您可以在更新集群以移除一个或多个工作器时设置超时值。
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+ 创建的 Dataproc 集群上,您可以运行 gcloud dataproc operations cancel
命令或发出 Dataproc API operations.cancel
请求,以取消顺利停用缩减操作。
取消优雅停用缩减操作时,会出现以下情况:
在操作取消完成后,处于
DECOMMISSIONING
状态的工作器会重新委托,并变为ACTIVE
。如果缩减操作包含标签更新,这些更新可能不会生效。
如需验证取消请求的状态,您可以运行 gcloud dataproc operations describe
命令或发出 Dataproc API operations.get
请求。如果取消操作成功,内部操作状态会标记为 CANCELLED。