运行 Apache Spark 批处理工作负载

了解如何使用 Dataproc Serverless 在 Dataproc 托管的计算基础架构,可根据需要扩缩资源。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Dataproc API。

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Dataproc API。

    启用 API

提交 Spark 批处理工作负载

控制台

  1. 在 Google Cloud 控制台中,前往 Dataproc 批次。点击创建。 打开创建批次页面。

  2. 选择并填写页面上的以下字段以提交 Spark 批次 计算 pi 近似值的工作负载:

    • 批次信息: <ph type="x-smartling-placeholder">
        </ph>
      • 批处理 ID:指定批处理工作负载的 ID。此值必须为 4-63 个小写字符。有效字符为 /[a-z][0-9]-/
      • 区域:选择将在其中运行工作负载的区域
    • 容器: <ph type="x-smartling-placeholder">
        </ph>
      • 批次类型:Spark。
      • 运行时版本:选择默认运行时版本。您可以视需要指定 非默认的 Dataproc 无服务器运行时版本
      • 主类:
        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: 前缀。
    • 其他选项: <ph type="x-smartling-placeholder">
  3. 点击提交以运行 Spark 批处理工作负载。

gcloud

提交 Spark 批量工作负载以计算近似值 (共 pi),请运行以下 gcloud CLI gcloud dataproc batches submit spark 命令行中的命令 Cloud Shell

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 标志,用于指定批次生命周期的时长。当工作负载超出 则其将无条件终止,而不会等待 。使用 smhd (秒、分钟、小时或天)后缀。最小值为 10 分钟 (10m), 最大值为 14 天 (14d)。 <ph type="x-smartling-placeholder">
      </ph>
    • 1.1 或 2.0 运行时批次:如果未指定 --ttl 对于 1.1 或 2.0 运行时批量工作负载,允许该工作负载运行,直至其退出 (如果不退出,则一直运行)。
    • 2.1+ 运行时批次:如果未指定 --ttl 则默认为 4h
  • 其他选项:您可以添加 gcloud dataproc batches submit 命令标志来指定其他工作负载选项和 Spark 属性。
    • Hive Metastore:以下命令会将批量工作负载配置为使用外部 自行管理的 Hive Metastore 使用标准 Spark 配置。
      gcloud dataproc batches submit \
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
              
    • 永久性历史记录服务器
      1. 以下命令将在单节点 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
                     
      2. 提交批量工作负载,并指定正在运行的永久性历史记录服务器。
        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
                      
    • 运行时版本 使用 --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
                  

API

本部分介绍如何创建批量工作负载 计算近似值 pi(使用 Dataproc Serverless for Spark) batches.create`

在使用任何请求数据之前,请先进行以下替换:

  • project-id:Google Cloud 项目 ID。
  • region:Compute Engine 区域 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 无服务器价格

后续步骤

了解: