Hadoop JAR包运行时权限不够的问题

时间:2021-11-18 09:15:33
错误信息如下:


13/11/10 22:19:09 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000002_0, Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)


attempt_201311102206_0004_m_000002_0: execvp: 权限不够
13/11/10 22:19:12 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000002_1, Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)


attempt_201311102206_0004_m_000002_1: execvp: 权限不够
13/11/10 22:19:15 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000002_2, Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)


attempt_201311102206_0004_m_000002_2: execvp: 权限不够
13/11/10 22:19:22 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000001_0, Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)


attempt_201311102206_0004_m_000001_0: execvp: 权限不够
13/11/10 22:19:25 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000001_1, Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)


attempt_201311102206_0004_m_000001_1: execvp: 权限不够
13/11/10 22:19:28 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000001_2, Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)


attempt_201311102206_0004_m_000001_2: execvp: 权限不够


百度搜了半天,有说改log文件权限的,还有说把userlog删了的,都没用。最后想到取*上搜一下,结果还真有:
<blockquote>We have same problem. we fix it by adding 'execute' to below file.


$JAVA_HOME/jre/bin/java
Because hadoop use $JAVA_HOME/jre/bin/java to spawn task program instead of $JAVA_HOME/bin/java.


If you still have this issue after change the file mode, suggest you use remote debug to find the shell cmd which spawning the task, see debugging hadoop task</blockquote>
就是将hadoop-env中不应改设置成jdk的home,应该设为jre的home。果然成功!


楼下还有个老外是这么说的:
<blockquote>I have encountered the same problem.


You can try changing the jdk version 32bit to 64bit or 64bit to 32bit.</blockquote>
&nbsp;