我正在尝试在macOS 10.12上运行基本的MapReduce程序,该程序从天气数据的日志文件中检索最高温度。运行作业时,我收到以下堆栈跟踪:
Stack trace: ExitCodeException exitCode=126:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:582)
at org.apache.hadoop.util.Shell.run(Shell.java:479)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:773)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
资源管理器中作业的stderr日志文件包含以下消息:“ / bin / bash:/ bin / java:是目录”。
我本来收到类似的错误消息,“/斌/庆典:/斌/ java的:没有这样的文件或目录”,但修改了hadoop-config.sh脚本首先在回答所建议的这个帖子。我将其修改如下:
if [[ -z $JAVA_HOME ]]; then
# On OSX use java_home (or /Library for older versions)
if [ "Darwin" == "$(uname -s)" ]; then
if [ -x /usr/libexec/java_home ]; then
export JAVA_HOME=${JAVA_HOME}
else
export JAVA_HOME=${JAVA_HOME}
fi
fi
Run Code Online (Sandbox Code Playgroud)
我的$ JAVA_HOME变量设置为: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
这是我的JAVA_HOME变量的配置问题导致的吗?
通过在hadoop-env.sh中对JAVA_HOME变量进行硬编码来解决此问题(如对此问题的最高投票表决的答案中所指定)
改变了这个:
export JAVA_HOME=${JAVA_HOME}
Run Code Online (Sandbox Code Playgroud)
对此:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |