View a markdown version of this page

调优 Spark 作业性能的策略 -

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

调优 Spark 作业性能的策略

准备优化参数时,请遵循以下最佳实践:

  • 应首先确定性能目标,然后再开始确定性能问题。

  • 应首先使用指标来确定问题,然后再尝试更改优化参数。

为确保在优化作业时获得稳定一致的结果,应为优化工作制定基线策略。

性能优化的基准策略

性能优化的工作流通常如下:

  1. 确定性能目标。

  2. 衡量指标。

  3. 识别瓶颈。

  4. 减少瓶颈的影响。

  5. 重复第 2-4 步,直到达到预期目标为止。

首先,确定您的性能目标。例如,您的目标之一可能是在 3 小时内完成 AWS Glue 作业。定义目标后,衡量作业性能指标。识别指标的趋势和瓶颈以实现目标。特别是,识别瓶颈对于排查、调试和性能调优最为重要。在 Spark 应用程序运行期间,Spark 会在 Spark 事件日志中记录每个任务的状态和统计信息。

在中 AWS Glue,你可以通过 Spark 历史服务器提供的 Spark Web 用户界面查看 Spark 指标。 AWS Glue for Spark 任务可以将 Spark 事件日志发送到你在 Amazon S3 中指定的位置。 AWS Glue 还提供了一个示例AWS CloudFormation 模板Dockerfile,用于在 Amazon EC2 实例或您的本地计算机上启动 Spark 历史服务器,因此您可以将 Spark 用户界面与事件日志一起使用。

在确定性能目标并明确评测这些目标的指标后,您可以使用以下各节中的策略开始识别和修复瓶颈。

Spark 作业性能的调优实践

您可以使用以下策略对 Spark 作业 AWS Glue 进行性能优化:

在使用这些策略之前,您必须能够访问 Spark 作业的指标和配置。您可以在 AWS Glue 文档中找到这些信息。

从 AWS Glue 资源的角度来看,您可以通过添加 AWS Glue 工作人员和使用最新 AWS Glue 版本来提高性能。

从 Apache Spark 应用程序视角来看,您可以访问几种能够提升性能的策略。如果将不必要的数据加载到 Spark 集群中,则可以将其移除以减少加载的数据量。如果您的 Spark 集群资源未得到充分利用,并且数据较少 I/O,则可以确定要并行处理的任务。如果联接等繁重的数据传输操作需要大量时间,则可能还需要对其进行优化。您还可以优化作业查询计划或降低单个 Spark 作业的计算复杂性。

要高效地应用这些策略,您必须通过查阅指标来确定其何时适用。有关更多详细信息,请参阅以下各节。这些技术不仅适用于性能调优,而且可用于解决内存不足(OOM)错误等典型问题。