放置在运行脚本的EC2实例上的S3中的EMR日志在哪里?]

问题描述 投票:0回答:1
:假设我在EMR-assert 1 == 2上运行了一个非常简单的Python脚本。该脚本将失败,并带有AssertionError。日志中包含包含AssertionError的跟踪记录,该跟踪将包含(如果启用了日志)在我在设置中指定的S3存储桶中,然后当这些日志放入S3中​​时,我可以读取包含AssertionError的日志。但是,这些日志在[[之前哪里存在,它们被放入S3? 我假设它们将存在于运行特定脚本的EC2实例上。假设我已经连接到该EC2实例,并且脚本运行所在的EMR步骤具有ID s-EXAMPLE。如果我这样做:[n1c9@mycomputer cwd]# gzip -d /mnt/var/log/hadoop/steps/s-EXAMPLE/stderr.gz [n1c9@mycomputer cwd]# cat /mnt/var/log/hadoop/steps/s-EXAMPLE/stderr

然后,我将获得一个输出,其中包含可以在EMR上访问的20/01/22 17:32:50 INFO Client: Application report for application_1 (state: ACCEPTED)日志文件中的典型stderrimage showing Log files section of EMR step

所以我的问题是:日志(stdout)在哪里查看实际提出的AssertionError?它被放置在我的S3存储桶中,指示脚本失败/完成后大约5-7分钟进行记录,那么在此之前它在EC2中存在什么位置?我问是因为在将这些错误日志放到S3上之前先获取这些错误日志可以节省大量时间-基本上每次我写一个失败的脚本时需要5分钟,这比我想承认的要多得多!

到目前为止,我已经尝试过:

我已经尝试在上面的代码示例中的路径中检查EC2计算机上的stdout,但是stdout文件始终为空:command terminal indicating that stdout is 0 bytes] >

[我要努力理解的是,如果S3分钟后有stdout回溯可用,AssertionError文件如何为空(我误解了此过程的工作原理?)。我也尝试在PySpark构建的一些临时文件夹中查找,但也没有运气。另外,我已经打印了在EMR上运行的EC2实例的控制台的输出,包括核心和主控,但是它们似乎都没有我想要的相关信息。

[我还浏览了boto3的一些EMR方法,并尝试了此处记录的describe_step方法:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html#EMR.Client.describe_step-对于失败的步骤,具有FailureDetails json dict响应。不幸的是,它仅包含一个链接到S3上LogFile文件的stderr.gz键(即使该文件尚不存在)和一个包含通用Message消息的Exception in thread..键,而不包含stdout ]。我是否对这些日志的存在有误解?

如果您需要更多信息,请随时告诉我!

问题:假设我在EMR上运行了一个非常简单的Python脚本-断言1 ==2。此脚本将失败,并显示AssertionError。日志中包含回溯,该回溯包含AssertionError将是...

amazon-web-services amazon-ec2 stdout amazon-emr stderr
1个回答
0
投票
也许尝试检查那里是否有任何符号链接
© www.soinside.com 2019 - 2024. All rights reserved.