分享

用Oozie提交Map-Reduce样例程序报exitCode: 126 异常

pangge2007 发表于 2014-6-17 17:10:39 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 12 26728
pangge2007 发表于 2014-6-19 14:23:09
hyj 发表于 2014-6-18 18:48
要么注释掉,要么别有换行
yarn.application.classpath
    $HADOOP_CONF_DIR,


网上找了点资料和这个有点关系,水平有限没不知道怎么修改,具体内容如下:

http://tianhailong.com/hadoop-task-process-exit-with-nonzero-status-of-126.html

通过分析hadoop 1.0.1代码,发现map/reduce task在执行的时候,hadoop系统会先把要执行的java 命令已经一些环境变量写到一个本地的sh文件taskjvm.sh中,然后使用bash -c file的方式执行这个sh脚本,如果出错当然后抛出异常,进而导致看到
Caused by: java.io.IOException: Task process exit with nonzero status of 126.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)
这样的错误
所以,这个exitcode实际就是bash执行时的推出代码,bash的exitcode是有特殊含义的,通过google可以知道126表明是permission的问题,具体为啥是这样的,不是很清楚了~~
上面的那个文件在创建的是权限是700(rwx——), 而这个文件在执行的过程中又被以setsid的方式exec,会不会这中间有些permission上的问题那~~~ 源码里说了,这样做是为了防止special character attacks
好吧水平有限,看不出来这里有什么竞争条件导致出现那样的错误
bash的退出码含义可以在下面的地方查到 http://tldp.org/LDP/abs/html/exitcodes.html
这个问题可以修改hadoop源码DefaultTaskControl加入重试机制,或者对task启用reuse=-1得到缓解(reuse和非reuse执行逻辑不一样),因为涉及到文件系统,不太容易根治。

点评

hyj
jar包的提取一般是不允许换行的  发表于 2014-6-19 19:11
回复

使用道具 举报

pangge2007 发表于 2014-6-20 09:05:36
pangge2007 发表于 2014-6-19 14:23
网上找了点资料和这个有点关系,水平有限没不知道怎么修改,具体内容如下:

http://tianhailong.com ...

配置文件的value值我已经取消了。。。但还是报错。。。。
回复

使用道具 举报

hyj 发表于 2014-6-20 12:38:33
pangge2007 发表于 2014-6-17 18:31
yarn.application.classpath属性的value值为空。

添加配置参数:
为什么会一个成功,一个失败。有成功的说明有戏,你试一下倒换一下他们的顺序。
看看是不是前面的影响了后面的,进一步看看是不是因为内存、打开的文件等因素造成的。
回复

使用道具 举报

12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条