如何对 Amazon EMR 中的 Spark SQL 查询失败或卡住进行故障排除?

2 分钟阅读
0

我想收集信息来对 Amazon EMR 中的 Spark SQL 查询问题进行故障排除。

解决方法

Spark SQL 已完成的查询位于 EMR 集群的 Spark History Server 的应用程序用户界面选项卡上。有关更多信息,请参阅查看永久应用程序用户界面

如需访问已完成的 Spark SQL 查询,请执行下面的操作:

  1. 在 Spark History Server 上,选择 SQL/DataFrame 以查看已完成的 Spark SQL 查询。
  2. 选择查询的 Spark SQL 作业应用程序 ID,在作业选项卡上打开已完成的作业 ID 信息。请注意,一个 SQL 查询可能有多个作业 ID。

作业选项卡中提供了下列信息:

  • 作业选项卡上,您可以看到作业的状态、作业持续时间和关联的 SQL 查询。
  • 作业选项卡上,您可以查看应用程序 ID 的时间轴。时间轴按时间顺序显示 Spark 执行程序的添加和删除。
  • 向下滚动以查看 DAG(有向无环图)。DAG 是 Spark SQL 查询的可视化效果。您还可以看到 RDD 依赖关系链。
  • 进一步滚动,查看 Spark SQL 作业的已完成阶段。
  • 选择阶段 ID 描述,以查看查询在所有任务中的总时间、地点级别摘要以及关联的作业 ID。阶段视图提供了与此阶段对应的所有 RDD 的详细信息。此视图还提供有关与高级 Spark SQL 操作相关的较低级别 RDD 操作的信息。
  • 展开执行程序的汇总指标,以查看执行程序日志。执行程序日志提供了有关 Spark SQL 作业的其他详细信息。

下面是日志示例:

23/01/17 18:10:17 INFO Executor: Finished task 0.0 in stage 16.0 (TID 16). 1882 bytes result sent to driver
23/01/17 18:10:17 INFO YarnCoarseGrainedExecutorBackend: Got assigned task 17
23/01/17 18:10:17 INFO Executor: Running task 0.0 in stage 17.0 (TID 17)
23/01/17 18:10:17 INFO TorrentBroadcast: Started reading broadcast variable 17 with 1 pieces (estimated total size 4.0 MiB)
23/01/17 18:10:17 INFO MemoryStore: Block broadcast_17_piece0 stored as bytes in memory (estimated size 7.2 KiB, free 4.8 GiB)
23/01/17 18:10:17 INFO TorrentBroadcast: Reading broadcast variable 17 took 8 ms
23/01/17 18:10:17 INFO MemoryStore: Block broadcast_17 stored as values in memory (estimated size 13.8 KiB, free 4.8 GiB)
23/01/17 18:10:17 INFO PythonRunner: Times: total = 52, boot = -31, init = 83, finish = 0
23/01/17 18:10:17 INFO Executor: Finished task 0.0 in stage 17.0 (TID 17). 1883 bytes result sent to driver
23/01/17 18:11:20 ERROR CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
23/01/17 18:11:20 INFO MemoryStore: MemoryStore cleared
23/01/17 18:11:20 INFO BlockManager: BlockManager stopped
23/01/17 18:11:20 INFO ShutdownHookManager: Shutdown hook called

有关详细信息,请参阅 Apache Spark 文档 Web UI 部分中的“作业”选项卡

相关信息

检查日志文件

AWS 官方
AWS 官方已更新 1 年前