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

在运行Hadoop JAR包时遇到了'权限不够'的错误,错误涉及TaskRunner和execvp。尝试了修改log文件权限和删除userlog文件等方法未果。通过StackOverflow找到解决方案,问题出在$JAVA_HOME的配置上,需将其指向jre的bin目录,并确保文件具有执行权限。此外,也有建议检查是否因JDK位数不匹配导致问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误信息如下:


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删了的,都没用。最后想到取StackOverFlow上搜一下,结果还真有:
<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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值