如何从 AWS 日志中读取 stderr 日志

时间:2021-01-19 01:27:26

标签: apache-spark debugging logging pyspark amazon-emr

我正在使用 EMR 步骤来运行我的作业。 通常,当我想分析作业的性能或了解失败的原因时,我会查看 Spark 历史服务器以获取 DAG 可视化和作业错误等。 例如,如果作业由于堆错误或 Fetchfailed 等原因失败,我可以在 spark 历史服务器中看到它明确指定。 但是,当我查看写入 LOG URI S3 存储桶的 stderr 日志文件时,似乎无法找到此类描述。 有没有办法获得这样的信息? 我使用 pyspark 并将日志级别设置为

sc = spark.sparkContext
sc.setLogLevel('DEBUG') 

对我做错了什么有任何见解吗?

1 个答案:

答案 0 :(得分:1)

我还没有真正测试过这个,但由于评论有点长,我把它贴在这里作为答案。

就像我在评论中指出的那样,您使用 Spark History Server UI 查看的日志与从 EMR 保存到 S3 的 Spark driver logs 不同。

要将 Spark 历史服务器日志写入 S3,您必须向集群添加一些额外的配置。 Spark 文档的 Monitoring and Instrumentation 部分描述了这些配置选项。

在 AWS EMR 中,您可以尝试将这样的内容添加到您的集群配置中:

...

{
  'Classification': 'spark-defaults',
  'Properties': {
    'spark.eventLog.dir': 's3a://your_bucket/spark_logs',
    'spark.history.fs.logDirectory': 's3a://your_bucket/spark_logs',
    'spark.eventLog.enabled': 'true'
  }
}

...

我发现这个有趣的 post 描述了如何为 Kubernetes 集群设置它,您可能需要查看它以获取更多详细信息。