Google Dataproc 是一个用于运行 Apache Spark 和 Apache Hadoop 作业的完全托管服务。可抢占工作器(Preemptible Workers)是一种经济实惠的计算资源,它们的生命周期可能比常规工作器更短,因为它们可能会在任何时候被系统抢占。以下是在 Google Dataproc 中设置和使用可抢占工作器的初始化操作:
--num-preemptible-workers
参数指定可抢占工作器的数量。
gcloud dataproc clusters create my-cluster \ --num-workers 2 \ --num-preemptible-workers 3 \ --zone us-central1-a \ --master-boot-disk-size 500GB \ --worker-boot-disk-size 500GB \ --image-version 2.0 \ --master-machine-type n1-standard-4 \ --worker-machine-type n1-standard-2 \ --project your-project-id初始化操作是指在集群创建后,但在作业运行之前执行的一系列步骤。对于可抢占工作器,可能需要执行以下初始化操作:
确保 YARN 资源管理器正确配置以处理可抢占工作器的生命周期。
gcloud dataproc jobs submit pyspark \
--cluster=my-cluster \
--region=us-central1 \
-- \
spark-submit \
--master yarn \
--deploy-mode cluster \
--conf spark.yarn.resourcemanager.scheduler.class=com.google.cloud.dataproc.scheduler.GangScheduler \
your_script.py
在 Spark 应用程序中,可能需要设置一些配置以适应可抢占工作器的特性。
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("MyApp") \
.config("spark.scheduler.mode", "FAIR") \
.config("spark.yarn.am.memory", "512m") \
.config("spark.executor.memory", "2g") \
.config("spark.executor.cores", "2") \
.getOrCreate()
编写应用程序逻辑以处理工作器丢失事件。可以使用 Spark 的监听器或自定义逻辑来检测和处理这些事件。
from pyspark import SparkContext
sc = SparkContext("yarn", "MyApp")
def handle_worker_loss(event):
print(f"Worker lost: {event}")
sc.addSparkListener(MyCustomSparkListener(handle_worker_loss))
通过以上步骤,您可以在 Google Dataproc 中有效地设置和使用可抢占工作器,并确保应用程序能够适应这些工作器的特性。
领取专属 10元无门槛券
手把手带您无忧上云