了解如何使用 Dataproc Serverless 在 Dataproc 管理的计算基础架构上提交批处理工作负载,该基础架构会根据需要扩缩资源。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
提交 Spark 批处理工作负载
控制台
在 Google Cloud 控制台中,前往 Dataproc 批次。点击创建。 打开创建批次页面。
选择并填写页面上的以下字段以提交用于计算 pi 近似值的 Spark 批处理工作负载:
- 批处理信息:
- 批处理 ID:指定批处理工作负载的 ID。此值必须为 4-63 个小写字符。有效字符为
/[a-z][0-9]-/
。 - 区域:选择将在其中运行工作负载的区域。
- 批处理 ID:指定批处理工作负载的 ID。此值必须为 4-63 个小写字符。有效字符为
- 容器:
- 批处理类型:Spark。
- 运行时版本:选择默认运行时版本。(可选)您可以指定非默认的 Dataproc Serverless 运行时版本。
- 主类:
org.apache.spark.examples.SparkPi
- jar 文件(此文件预安装在 Dataproc Serverless Spark 执行环境中)。
file:///usr/lib/spark/examples/jars/spark-examples.jar
- 参数:1,000。
- 执行配置:您可以指定 服务账号 来运行工作负载如果您不指定服务账号 运行于 Compute Engine 默认服务账号。
- 网络配置:执行 Dataproc Serverless for Spark 工作负载的 VPC 子网必须 启用 专用 Google 访问通道 并满足 Dataproc Serverless for Spark 网络配置。 子网列表将显示所选网络中已启用 专用 Google 访问通道。
- Properties:输入
Key
(属性名称)和Value
支持的 Spark 属性 Spark 批处理工作负载上设置的资源。注意:与 Compute Engine 上的 Dataproc 不同 集群属性 Dataproc Serverless for Spark 工作负载属性不包含spark:
前缀。 - 其他选项:
- 您可以将批量工作负载配置为使用外部 自行管理的 Hive Metastore 。
- 您可以使用永久性历史记录服务器 (PHS)。 PHS 必须位于您运行批处理工作负载的区域。
- 批处理信息:
点击提交以运行 Spark 批处理工作负载。
gcloud
如需提交 Spark 批处理工作负载以计算 pi
的近似值,请在终端窗口或 Cloud Shell 中本地运行以下 gcloud CLI gcloud dataproc batches submit spark
命令。
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
注意:
- REGION: 指定将在其中运行工作负载的区域。
- 子网:执行 Dataproc Serverless for Spark 工作负载的 VPC 子网必须启用专用 Google 访问通道,并满足 Dataproc Serverless for Spark 网络配置中列出的其他要求。
如果
default
网络的子网 对于以下项目,均未启用gcloud dataproc batches submit
命令中指定的区域 专用 Google 访问通道、 您必须执行以下操作之一:- 为区域的默认网络子网启用专用 Google 访问通道,或
- 在命令中使用
--subnet=[SUBNET_URI]
标志来指定已启用专用 Google 访问通道的子网。您可以运行gcloud compute networks describe [NETWORK_NAME]
命令以列出网络中子网的 URI。
--jars
:示例 JAR 文件已预安装在 Spark 执行环境中, 传递给 SparkPi 工作负载的1000
命令参数指定 1000 pi 估算逻辑的迭代(工作负载输入参数 “-- ”)。--properties
:您可以添加--properties
输入标志 支持的 Spark 属性 Spark 批处理工作负载所需的资源。--deps-bucket
:您可以将此标志添加到 指定 Dataproc Serverless 的 Cloud Storage 存储桶 将上传工作负载依赖项存储桶的gs://
URI 前缀不是必需的;您可以指定存储桶路径或存储桶名称,例如“mybucketname”。Dataproc Serverless for Spark 可将 将文件复制到存储桶中的/dependencies
文件夹,然后再运行 批量工作负载注意:如果您的批处理工作负载引用本地机器上的文件,则必须添加此标志。--ttl
:您可以添加--ttl
标志以指定批处理生命周期的持续时间。当工作负载超出 则其将无条件终止,而不会等待 。使用s
、m
、h
或d
(秒、分钟、小时或天)后缀指定时长。最小值为 10 分钟 (10m
), 最大值为 14 天 (14d
)。- 1.1 或 2.0 运行时批次:如果未指定
--ttl
对于 1.1 或 2.0 运行时批量工作负载,允许该工作负载运行,直至其退出 (如果没有退出,则一直运行)。 - 2.1 及更高版本的运行时批处理作业:如果未为 2.1 或更高版本的运行时批处理作业指定
--ttl
,则默认为4h
。
- 1.1 或 2.0 运行时批次:如果未指定
- 其他选项:您可以添加
gcloud dataproc batches submit
命令标志来指定其他工作负载选项和 Spark 属性。- Hive Metastore:以下命令将批处理工作负载配置为使用具有标准 Spark 配置的外部自行管理式 Hive Metastore。
gcloud dataproc batches submit \ --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \ other args ...
- Persistent History Server:
- 以下命令将在单节点 Dataproc 上创建 PHS
集群。PHS 必须位于您运行批处理工作负载的区域,并且 Cloud Storage bucket-name 必须存在。
gcloud dataproc clusters create PHS_CLUSTER_NAME \ --region=REGION \ --single-node \ --enable-component-gateway \ --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
- 提交批处理工作负载,并指定正在运行的 Persistent History Server。
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \ -- 1000
- 以下命令将在单节点 Dataproc 上创建 PHS
集群。PHS 必须位于您运行批处理工作负载的区域,并且 Cloud Storage bucket-name 必须存在。
- 运行时版本:
使用
--version
标志指定 Dataproc Serverless 运行时版本。gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --version=VERSION -- 1000
- Hive Metastore:以下命令将批处理工作负载配置为使用具有标准 Spark 配置的外部自行管理式 Hive Metastore。
API
本部分介绍如何创建批量工作负载
计算近似值
pi
(使用 Dataproc Serverless for Spark)
batches.create
`
在使用任何请求数据之前,请先进行以下替换:
- project-id:Google Cloud 项目 ID。
- region:Dataproc Serverless 将在其中运行工作负载的 Compute Engine 区域。 注意:
- Custom-container-image:使用 Docker 映像命名格式指定自定义容器映像:
{hostname}/{project-id}/{image}:{tag}
,例如“gcr.io/my-project-id/my-image:1.0.1”。 注意:您必须在 Container Registry 上托管自定义容器。 - 子网:执行 Dataproc Serverless for Spark 工作负载的 VPC 子网必须启用专用 Google 访问通道,并满足 Dataproc Serverless for Spark 网络配置中列出的其他要求。
如果指定区域的
default
网络子网未启用专用 Google 访问通道,您必须执行以下任一操作:- 为区域的默认网络子网启用专用 Google 访问通道,或
- 使用
ExecutionConfig.subnetworkUri
字段指定启用了专用 Google 访问通道的子网。您可以运行gcloud compute networks describe [NETWORK_NAME]
命令以列出网络中子网的 URI。
sparkBatch.jarFileUris
:示例 jar 文件预安装在 Spark 执行环境中。“1000”sparkBatch.args
会传递给 SparkPi 工作负载,并指定 pi 估算逻辑的 1000 次迭代。Spark properties
:您可以使用 RuntimeConfig.properties 要输入的字段 支持的 Spark 属性 Spark 批处理工作负载所用的资源。--ttl
:您可以使用EnvironmentConfig.ttl
字段指定批次生命周期的时长。如果工作负载超出此时长,系统会无条件终止该工作负载,而不会等待正在进行的工作完成。将时长指定为 Duration 的 JSON 表示法。 最小值为 10 分钟,最大值为 14 天。- 1.1 或 2.0 运行时批次:如果未指定
--ttl
对于 1.1 或 2.0 运行时批量工作负载,允许该工作负载运行,直至其退出 (如果没有退出,则一直运行)。 - 2.1 及更高版本的运行时批处理作业:如果未为 2.1 或更高版本的运行时批处理工作负载指定
--ttl
,则默认为 4 小时。
- 1.1 或 2.0 运行时批次:如果未指定
- 其他选项:
- 配置批处理工作负载以使用外部自行管理式 Hive Metastore。
- 使用永久性历史记录服务器 (PHS)。 PHS 必须位于您运行批处理工作负载的区域。
- 在
batches.create
请求中使用RuntimeConfig.version
字段指定非默认 Dataproc Serverless 运行时版本 .
HTTP 方法和网址:
POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches
请求 JSON 正文:
{ "sparkBatch":{ "args":[ "1000" ], "jarFileUris":[ "file:///usr/lib/spark/examples/jars/spark-examples.jar" ], "mainClass":"org.apache.spark.examples.SparkPi" } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name":"projects/project-id/locations/region/batches/batch-id", "uuid":",uuid", "createTime":"2021-07-22T17:03:46.393957Z", "sparkBatch":{ "mainClass":"org.apache.spark.examples.SparkPi", "args":[ "1000" ], "jarFileUris":[ "file:///usr/lib/spark/examples/jars/spark-examples.jar" ] }, "runtimeInfo":{ "outputUri":"gs://dataproc-.../driveroutput" }, "state":"SUCCEEDED", "stateTime":"2021-07-22T17:06:30.301789Z", "creator":"account-email-address", "runtimeConfig":{ "properties":{ "spark:spark.executor.instances":"2", "spark:spark.driver.cores":"2", "spark:spark.executor.cores":"2", "spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id" } }, "environmentConfig":{ "peripheralsConfig":{ "sparkHistoryServerConfig":{ } } }, "operation":"projects/project-id/regions/region/operation-id" }
估算工作负载费用
Dataproc Serverless for Spark 工作负载会使用数据计算单元 (DCU) 和 shuffle 存储资源。如需查看输出 Dataproc UsageMetrics 以估算工作负载资源消耗和费用的示例,请参阅 Dataproc Serverless 价格。
后续步骤
了解: