本页包含有关 Google Cloud Serverless for Apache Spark 的常见问题及解答。
在什么情况下应该使用 Serverless for Apache Spark 而不是 Dataproc on Compute Engine?
Serverless for Apache Spark:
- 支持 PySpark 内核 Jupyter 笔记本中的 Spark 批量工作负载和交互式会话。
- 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,您可以在指定的 Cloud Storage 存储桶中查看 Spark 事件和其他日志,即使在标准 Serverless for Apache Spark 临时存储桶 90 天保留期 (TTL) 之后也可以查看。
哪些 Serverless for Apache 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 个核心,那么它将同时运行 4 * 2 = 8
个任务。对于具有两个执行器(每个执行器有 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.instances
spark.dynamicAllocation.initialExecutors
spark.dynamicAllocation.minExecutors
spark.dynamicAllocation.maxExecutors
为什么需要将代码打包到 JAR 文件中才能提交 Spark 工作负载?
Spark 是用 Scala 编写的,这意味着驱动程序和工作器进程都作为 JVM 进程运行。在 JVM 语言中,JAR 文件是打包代码的主要方式。您可以在提交工作负载时将 JAR 文件传递给 Serverless for Apache Spark。