在windows下运行hadoop作业

时间:2012-11-05 13:23:24

标签: java windows hadoop cygwin classpath

我在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命令呢?

2 个答案:

答案 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 "$@"