python - 我在EMR群集主服务器上运行的python作业失败,该如何解决?

标签 python hadoop yarn emr amazon-emr

我向主服务器SSH并在控制台上运行我的hadoop作业以进行开发。我的工作以一种神秘的方式失败了,有许多对我来说毫无意义的java堆栈跟踪,请参见下文:

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)

最佳答案

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

$ yarn logs -applicationId application_1503951120983_0031 > /tmp/log 

关于python - 我在EMR群集主服务器上运行的python作业失败,该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990766/

相关文章:

hadoop - 无法为Hortonworks中的Map/Reduce作业分配多个CPU

python - def main() 无效语法、开发服务器和终端

python - 计算函数或变量被调用的次数

java - 将输入 arff 文件拆分成更小的 block 以处理非常大的数据集

Hadoop 任务调度程序 : Capacity vs Fair sharing or something else?

hadoop - 启动备用HDFS HA名称节点的SIGTERM

hadoop - 如何在HDP沙箱上的classpath中添加第三方jar?

python - 如何对凹面多边形进行三角剖分?

python - python 中的双重前瞻断言

hadoop - YARN REST API返回的startedTime和其他字段为0