在许多开发人员工作站上设置的小型Hadoop集群(即,它们具有不同的本地配置),我有一个6的TaskTracker存在问题。每当收到任务时,该任务会立即失败并显示ChildError
:
java.lang.Throwable: Child Error
at org.apache.hardoop.mapred.TaskRunner.run(TaskRunner.java:242)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hardoop.mapred.TaskRunner.run(TaskRunner.java:229)
当我查看任务的stdout
和stderr
日志时,stdout
日志为空,stderr
日志只有:
execvp: Permission denied
我的工作完成了,因为tasktracker最终被列入黑名单,并在运行任务没有问题的其他节点上运行。我无法在这一个节点上运行任何任务,因此这是一个普遍的问题。
我在此节点上运行的DataNode没有问题。
我想在这里可能存在某种类型的Java问题,它很难产生JVM或其他东西......
答案 0 :(得分:3)
我们有同样的问题。我们通过在下面的文件中添加'execute'来修复它。
$JAVA_HOME/jre/bin/java
因为hadoop使用$ JAVA_HOME / jre / bin / java来生成任务程序而不是$ JAVA_HOME / bin / java。
如果在更改文件模式后仍有此问题,建议您使用远程调试查找产生任务的shell cmd,请参阅debugging hadoop task
答案 1 :(得分:0)
无论尝试execvp
是什么,都没有设置可执行位。您可以使用命令行中的chmod
设置可执行位。
答案 2 :(得分:0)
我遇到了同样的问题。
您可以尝试将jbit版本32位更改为64位或64位更改为32位。