本页面包含有关 Google Cloud Serverless for Apache Spark 的常见问题及解答。
我应该在何种情况下使用 Serverless for Apache Spark,而不是 Dataproc on Compute Engine?
Serverless for Apache Spark:
- 支持 Spark 批量工作负载和 PySpark 内核 Jupyter 笔记本中的交互式会话。
- Serverless for Apache Spark 会创建和管理您的工作负载和交互式 会话基础架构。
Dataproc on Compute Engine:
支持提交不同类型的 Spark 作业,以及基于 其他开源组件(例如 Flink、Hadoop、Hive、Pig、Presto 等)的作业。
不会创建和管理基础架构。您需要创建和 管理 Dataproc 集群。
我可以使用 Serverless for Apache Spark 做什么?
使用 Spark 流式处理库运行流式处理作业。注意:流式处理 不是托管式服务,因此您必须管理检查点和重启。
使用 Spark MLlib 训练模型。
使用交互式 SQL 笔记本进行数据探索、图表、时间序列和 地理空间分析。
使用 Cloud Composer(一项 托管式 Apache Airflow 服务)编排 Serverless for Apache Spark 工作负载。
我应该如何设置工作负载执行计划?
您可以并发或按顺序运行工作负载。您的执行计划 会影响您的 Google Cloud 资源配额。您可以并行运行的工作负载数量取决于批量资源配额。
我可以在 Serverless for Apache Spark 中使用自定义映像吗?
- 可以。您可以使用自定义容器映像,而不是默认容器映像。 请参阅将自定义容器与 Serverless for Apache Spark 搭配使用。
我可以为 Serverless for Apache Spark Spark 工作负载指定内存和磁盘资源吗?
可以。您可以在提交工作负载时指定高级执行器和驱动程序计算和 磁盘层级,以及要分配的驱动程序和执行器计算和磁盘资源量 (请参阅 资源分配属性)。
如何为 Serverless for Apache Spark VPC 网络指定 IP 地址范围?
Serverless for Apache Spark 工作负载在您的环境中运行。
无服务器 Spark 工作负载中的每个 Spark 驱动程序和 Spark 执行器都会占用
您的 Serverless for Apache Spark VPC 网络中的一个内部 IP 地址。
/16 是 Serverless for Apache Spark VPC 网络中典型的用户指定
CIDR 地址范围
。
您可以根据计划运行的并发
工作负载数量来限制网络的 IP 地址范围。
Serverless for Apache Spark 是否支持数据驻留?
支持。您可以指定处理工作负载的区域。 在指定区域中找到输入和输出数据集。
Serverless for Apache Spark 如何在指定区域内选择可用区来运行工作负载?
Serverless for Apache Spark 会根据容量和可用性选择执行工作负载的 Compute Engine 可用区 。如果某个可用区在 工作负载启动后变得不可用,则工作负载会失败,您必须重新提交 失败的工作负载。
Serverless for Apache Spark 工作负载如何使用计算资源?
每个工作负载都在自己的计算资源上执行。多次批量 提交不会共享或重复使用计算资源。
最佳实践:
针对中等运行时间的作业(而不是短时间运行的作业)优化工作负载。
在 Cloud Storage 中保留多个工作负载访问的数据。
在哪里可以找到有关 Serverless for Apache Spark 公告、功能、bug 修复、已知问题和弃用的信息?
请参阅 Serverless for Apache Spark 版本说明。
并发工作负载是否会争用资源?
只有当资源配额不足以运行所有并发运行的工作负载时,Serverless for Apache Spark 工作负载才会争用资源。否则,工作负载之间会完全隔离。
Serverless for Apache Spark 配额是如何分配的?
Serverless for Apache Spark 批处理会消耗 Google Cloud 资源。 如需了解详情,请参阅 Dataproc Serverless 配额。
我是否需要设置 Dataproc Persistent History Server?
您可以选择设置 Persistent History Server (PHS) 以与 Serverless for Apache Spark 搭配使用。您可以使用 PHS 在标准 Serverless for Apache Spark 暂存和临时存储分区 90 天保留期 (TTL) 内和 之后查看指定 Cloud Storage 存储分区中的 Spark 事件和其他日志。
有哪些 Serverless for Apache Spark Spark 日志可用?
在 Spark 工作负载执行期间和 之后,Spark 执行器和驱动程序日志可在 Cloud Logging 中使用。此外,在工作负载运行时,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 个核心,则它将同时运行 4 * 2 = 8 个任务
。对于有 2 个执行器且每个执行器有 4 个核心的工作负载,它也会运行相同数量的任务。由于每个工作负载的核心数是
相同的,因此它们将运行相同数量的任务。您可以使用
spark.executor.cores
属性为 Serverless for Apache Spark 工作负载设置每个执行器的核心数。
Serverless for Apache Spark 使用哪些 Spark 指标进行自动扩缩?
Serverless for Apache Spark 会查看 maximum-needed 和 running
Spark 的动态分配指标,以确定是扩容还是缩容。
请参阅 Serverless for Apache Spark 自动扩缩。
我可以使用 Spark 属性配置 Serverless for Apache Spark 自动扩缩行为吗?
可以。Serverless for Apache Spark 自动扩缩基于 Spark 动态分配,并且 默认处于启用状态。您可以调整以下 Spark 属性 和 Spark 动态分配属性:
spark.executor.instancesspark.dynamicAllocation.initialExecutorsspark.dynamicAllocation.minExecutorsspark.dynamicAllocation.maxExecutors
为什么需要将代码打包到 JAR 文件中才能提交 Spark 工作负载?
Spark 是用 Scala 编写的,这意味着驱动程序和工作器进程 都作为 JVM 进程运行。在 JVM 语言中,JAR 文件是打包代码的主要方式。 您可以在提交工作负载时将 JAR 文件传递给 Serverless for Apache Spark。