Dataproc 无服务器常见问题解答

本页面包含 Dataproc 无服务器常见问题及解答。

何时应在 Compute Engine 上使用 Dataproc Serverless for Spark,而非 Dataproc?

  • Dataproc Serverless:

    • 支持 PySpark 内核 Jupyter 笔记本中的 Spark 批处理工作负载和交互式会话。
    • Dataproc Serverless 会创建并管理工作负载及交互式会话基础架构。
  • Compute Engine 上的 Dataproc:

    • 支持提交不同类型的 Spark 作业,以及基于其他开源组件(如 Flink、Hadoop、Hive、Pig、Presto 等)的作业。

    • 不创建和管理基础架构。您可以创建和管理自己的 Dataproc 集群。

Dataproc Serverless for Spark 有哪些用途?

我应如何设置工作负载执行计划?

您可以并发或依序运行工作负载。您的执行计划会影响您的 Google Cloud 资源配额。您可以根据批量资源配额所允许的数量,并行运行任意数量的工作负载。

我可以将自定义映像与 Dataproc Serverless for Spark 搭配使用吗?

我可以为 Dataproc Serverless Spark 工作负载指定内存和磁盘资源吗?

可以。您可以指定在提交工作负载时要分配的高级执行器和驱动程序计算层级和磁盘层级,以及要分配的驱动程序和执行器计算资源和磁盘资源的数量(请参阅资源分配属性)。

如何为我的 Dataproc 无服务器 VPC 网络指定 IP 地址范围?

适用于 Spark 工作负载的 Dataproc Serverless 在您的环境中运行。 无服务器 Spark 工作负载中的每个 Spark 驱动程序和 Spark 执行器都会使用 Dataproc 无服务器 VPC 网络中的一个内部 IP 地址。/16Dataproc 无服务器 VPC 网络的典型用户指定 CIDR 地址范围。您可以根据计划运行的并发工作负载数量来限制网络的 IP 地址范围。

Dataproc Serverless 是否支持数据驻留?

可以。您可以指定处理工作负载的区域。在指定区域中找到输入和输出数据集。

Dataproc Serverless 如何选择指定区域内的可用区来运行工作负载?

Dataproc Serverless 根据容量和可用性选择用于执行工作负载的 Compute Engine 可用区。如果某个可用区在工作负载启动后变为不可用,则工作负载会发生故障,您必须重新提交发生故障的工作负载。

Dataproc 无服务器工作负载如何使用计算资源?

每个工作负载都在自己的计算资源上执行。多次批量提交不会共享或重复使用计算资源。

最佳实践:

  • 针对中等运行的作业(而非短期运行的作业)优化工作负载。

  • 在 Cloud Storage 中保留多个工作负载访问的数据。

我可以在哪里找到有关 Dataproc Serverless 公告、功能、bug 修复、已知问题和弃用的信息?

请参阅 Dataproc 无服务器版本说明

并发工作负载是否会争用资源?

只有当您的资源配额不足以运行所有并发运行的工作负载时,Dataproc 无服务器工作负载才会竞争资源。否则,工作负载会完全隔离。

Dataproc Serverless 配额如何分配?

Dataproc 无服务器批次会使用 Google Cloud 资源。如需了解详情,请参阅 Dataproc 无服务器配额

我需要设置 Dataproc 永久性历史记录服务器吗?

您可以视需要设置永久性历史记录服务器 (PHS) 以与 Dataproc Serverless 配合使用。您可以使用 PHS 查看指定 Cloud Storage 存储桶中的 Spark 事件和其他日志,在标准 Dataproc 无服务器暂存和临时存储桶 90 天保留 (TTL) 期限之前及之后。

有哪些 Dataproc Serverless Spark 日志可用?

在 Spark 工作负载执行期间和之后,您可以在 Cloud Logging 中使用 Spark 执行器和驱动程序日志。此外,当工作负载运行时,Spark 应用会显示在永久性历史记录服务器 (PHS) 网页界面中(在 PHS 界面中选择 PHS > 未完成的应用)。

如果您设置了 Dataproc PHS,它就可以永久访问 Cloud Storage 中保存的 Spark 事件日志,您可以通过这些日志深入了解 Spark 应用的执行情况,例如 DAG 和执行程序事件。

我可以设置 Spark 工作负载的执行器数量吗?

可以。您可以使用 spark.executor.instances 属性设置 Spark 工作负载的执行程序数量。但是,工作负载可以使用的核心总数比执行程序的数量更重要,因为 Spark 每个核心运行 1 项任务。例如,如果工作负载有四个执行程序,每个执行程序有两个核心,则该工作负载将同时运行 4 * 2 = 8 任务。此外,它还会为具有两个执行程序(每个执行程序各有 4 个核心)的工作负载运行相同数量的任务。由于每个工作负载的核心数量相同,因此它们将运行相同数量的任务。您可以使用 spark.executor.cores 属性为 Dataproc Serverless 工作负载设置每个执行程序的核心数。

Dataproc Serverless 使用哪些 Spark 指标进行自动扩缩?

Dataproc Serverless for Spark 根据 maximum-neededrunning Spark 的动态分配指标来确定是扩容还是缩容。请参阅使用 Dataproc 无服务器实现 Spark 自动扩缩

我可以使用 Spark 属性配置 Dataproc Serverless 自动扩缩行为吗?

可以。Dataproc 无服务器自动扩缩基于 Spark 动态分配,默认处于启用状态。您可以调整以下 Spark 属性Spark 动态分配属性

  • spark.executor.instances
  • spark.dynamicAllocation.initialExecutors
  • spark.dynamicAllocation.minExecutors
  • spark.dynamicAllocation.maxExecutors

为什么需要将代码打包到 JAR 文件中才能提交 Spark 工作负载?

Spark 用 Scala 编写,这意味着驱动程序和工作器进程都作为 JVM 进程运行。在 JVM 语言中,JAR 文件是封装代码的主要方式。提交工作负载时,您需要将 JAR 文件传递给 Dataproc Serverless。