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

How to read stderr logs from AWS logs

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

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

关于我做错了什么的任何见解?

我还没有真正测试过这个,但是因为它有点长不适合放在评论中,所以我 post 在这里作为答案。

正如我在评论中指出的那样,您使用 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 集群设置它,您可能需要查看它以了解更多详细信息。