本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
调优 Spark 作业性能的策略
准备优化参数时,请遵循以下最佳实践:
-
应首先确定性能目标,然后再开始确定性能问题。
-
应首先使用指标来确定问题,然后再尝试更改优化参数。
为确保在优化作业时获得稳定一致的结果,应为优化工作制定基线策略。
性能优化的基准策略
性能优化的工作流通常如下:
-
确定性能目标。
-
衡量指标。
-
识别瓶颈。
-
减少瓶颈的影响。
-
重复第 2-4 步,直到达到预期目标为止。
首先,确定您的性能目标。例如,您的目标之一可能是在 3 小时内完成 AWS Glue 作业。定义目标后,衡量作业性能指标。识别指标的趋势和瓶颈以实现目标。特别是,识别瓶颈对于排查、调试和性能调优最为重要。在 Spark 应用程序运行期间,Spark 会在 Spark 事件日志中记录每个任务的状态和统计信息。
在中 AWS Glue,你可以通过 Spark 历史服务器提供的 Spark Web 用户界面
在确定性能目标并明确评测这些目标的指标后,您可以使用以下各节中的策略开始识别和修复瓶颈。
Spark 作业性能的调优实践
您可以使用以下策略对 Spark 作业 AWS Glue 进行性能优化:
-
AWS Glue 资源:
-
Spark 应用程序:
在使用这些策略之前,您必须能够访问 Spark 作业的指标和配置。您可以在 AWS Glue 文档中找到这些信息。
从 AWS Glue 资源的角度来看,您可以通过添加 AWS Glue 工作人员和使用最新 AWS Glue 版本来提高性能。
从 Apache Spark 应用程序视角来看,您可以访问几种能够提升性能的策略。如果将不必要的数据加载到 Spark 集群中,则可以将其移除以减少加载的数据量。如果您的 Spark 集群资源未得到充分利用,并且数据较少 I/O,则可以确定要并行处理的任务。如果联接等繁重的数据传输操作需要大量时间,则可能还需要对其进行优化。您还可以优化作业查询计划或降低单个 Spark 作业的计算复杂性。
要高效地应用这些策略,您必须通过查阅指标来确定其何时适用。有关更多详细信息,请参阅以下各节。这些技术不仅适用于性能调优,而且可用于解决内存不足(OOM)错误等典型问题。