2017-08-31 71 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

相關問題