今天在Mac配置伪分布式环境。部署完毕后,运行MapReduce程序,程序运行刚开始没有问题, 但是到启动Map Task时,就报错误,报exitCode: 127错误。
错误日志如下:
15/04/06 00:08:01 INFO mapreduce.Job: Job job_1428250045856_0002 failed with state FAILED due to: Application application_1428250045856_0002 failed 2 times due to AM Container for appattempt_1428250045856_0002_000002 exited with exitCode: 127 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
at org.apache.hadoop.util.Shell.run(Shell.java:418)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
解决办法:
1 从错误日志上看应该是某个Shell命令在Mac上没有找到。
2 查看每个程序的日志:hadoop-2.3.0/logs/userlogs/application_1428247759749_0002/container_1428247759749_0002_02_000001中的错误日志:
/bin/bash: /bin/java: No such file or directory
可以看到:/bin/java 的命令没有找到。
建立一个软链接,链接到java程序即可。
上文中的日志文件和异常中的文件名对应不上,这个是我编写时的问题, 实际可以根据日志中的文件名找到具体的错误文件。但是整个流程,是这个。
在Mac环境下配置伪分布式环境并运行MapReduce程序时遇到启动MapTask时报错exitCode:127的问题。通过检查错误日志发现是/bin/java命令未找到,解决方法是在Mac上建立该命令的软链接。此过程涉及Shell命令的使用及日志分析。

802

被折叠的 条评论
为什么被折叠?



