我在windows下成功安装了hadoop。 (Namenodes和jobtrackers正常启动)
现在我正在尝试运行一些示例作业:
运行以下命令(在cygwin中)
hadoop jar $HADOOP_INSTALL/hadoop-0.20.2-examples.jar randomwriter random-data
抛出
Exception in thread "main" java.io.IOException: Error opening job jar: /cygdrive /c/cygwin/home/Username/hadoop/hadoop-0.20.2-examples.jar
at org.apache.hadoop.util.RunJar.main(RunJar.java:90)
Caused by: java.io.FileNotFoundException: \cygdrive\c\cygwin\home\Username\hadoop\hadoop-0.20.2-examples.jar (The system cannot find the path specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:127)
at java.util.jar.JarFile.<init>(JarFile.java:135)
at java.util.jar.JarFile.<init>(JarFile.java:72)
at org.apache.hadoop.util.RunJar.main(RunJar.java:88)
由于cygwin无法识别CLASSPATH这一事实,可能会引发这种情况。
对此问题的解决方案(?)进行了描述here
所以,一般来说我必须执行java程序作为
java -classpath `cygpath -wp $CLASSPATH` [arguments]
现在,鉴于此,我应该如何与上一个命令一起执行上述hadoop命令呢?
答案 0 :(得分:1)
我发现这篇文章已有一年多了,但没有标注答案。你非常接近......这应该可以在不必编辑任何配置的情况下工作。
hadoop jar `cygpath -wp $HADOOP_INSTALL/hadoop-0.20.2-examples.jar` randomwriter random-data
答案 1 :(得分:0)
编辑$ HADOOP_HOME / bin / hadoop文件并根据您的cygwin要求更改调用java命令的最后一行。之后将该示例称为初始调用。
调用java的最后一行是
# run it
exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"