2017-08-31 26 views
0

我ssh给主人,并在控制台上运行我的hadoop作业用于开发目的。我的工作在一个神秘的方式失败,有许多Java堆栈跟踪,使没有意义的我,见下图:我在EMR群集的主服务器上运行的我的python作业失败,如何排除故障?

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 143 
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:322) 
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:535) 
at org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:120) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:455) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:344) 
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 

回答

0

查看日志在你的Python代码中的错误。对于EMR/yarn,您可以从WEB UI或集群master shell中找到您的日志,如下所示(当应用程序启动时,您的应用程序ID将会不同)。有很多输出,将其重定向到文件中,并显示搜索Python堆栈跟踪以查看您的应用出了什么问题。所有这些堆栈跟踪通常表明至少有一个reduce进程失败,但进程的stderr未显示在CLI/shell输出中。

$ yarn logs -applicationId application_1503951120983_0031 > /tmp/log 
+0

今天,我不得不使用这个在EMR任务,即可解决问题。我试图在S3中找到日志被转储的日志,并且应该放在名为“j-XXXXXXXXXXXXXXX/containers/application_151935143321369_0010/container_151239351321369_0010_01_001374/stderr.gz”的文件中,但是对于失败的任务,此文件不存在。所以我不得不重现这种情况,在失败后让集群继续运行并遵循方向。 – gae123

相关问题