Dataproc Serverless 常见问题解答

本页面包含 Dataproc Serverless 常见问题解答。

我何时应使用 Dataproc Serverless for Spark 而非 Dataproc on Compute Engine?

  • Dataproc Serverless:

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

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

    • 不创建和管理基础架构。您创建和管理 Dataproc 集群。

我可以使用 Dataproc Serverless for Spark 做些什么?

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

您可以并发或顺序运行工作负载。您的执行计划会影响您的 Google Cloud 资源配额。您可以并行运行的批处理工作负载数量取决于您的批处理资源配额。

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

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

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

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

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

Dataproc Serverless 是否支持数据驻留?

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

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

Dataproc Serverless 会根据容量和可用性选择执行工作负载的 Compute Engine 可用区。如果某个可用区在工作负载启动后变为不可用状态,该工作负载将会失败,并且您必须重新提交失败的工作负载。

Dataproc Serverless 工作负载如何使用计算资源?

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

最佳实践:

  • 针对运行时间较长的作业(而非运行时间较短的作业)优化工作负载。

  • 将多个工作负载访问的数据持久存储在 Cloud Storage 中。

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

请参阅 Dataproc Serverless 版本说明

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

只有当您的资源配额不足以运行所有同时运行的工作负载时,Dataproc Serverless 工作负载才会争用资源。否则,工作负载彼此完全隔离。

Dataproc Serverless 配额如何分配?

Dataproc Serverless 批处理会消耗 Google Cloud 资源。如需了解详情,请参阅 Dataproc Serverless 配额

我需要设置 Dataproc Persistent History Server 吗?

您可以选择设置 Persistent History Server (PHS) 以与 Dataproc Serverless 搭配使用。您可以使用 PHS 在标准 Dataproc Serverless 暂存桶和临时桶的 90 天保留期限内和之后查看指定 Cloud Storage 存储桶中的 Spark 事件和其他日志。

有哪些 Dataproc Serverless Spark 日志可用?

在 Spark 工作负载执行期间和之后,Cloud Logging 中会显示 Spark 执行器和驱动程序日志。此外,在工作负载运行时,Spark 应用会显示在 Persistent History Server (PHS) 网页界面中(在 PHS 界面中,依次选择 PHS > Incomplete Applications)。

如果您设置了 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 会查看 Spark 的 maximum-neededrunning 动态分配指标,以确定是扩容还是缩容。请参阅适用于 Spark 自动扩缩的 Dataproc Serverless

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

是。Dataproc Serverless 的自动扩缩功能基于 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。