2013-10-14 55 views
3

我已經使用Cygwin終端在Windows上從Apache安裝了Hadoop 2.1版。運行命令hadoop version讓我這個錯誤:運行「hadoop版本」命令時在Cygwin上的Hadoop中出現CLASSPATH問題

Error: Could not find or load main class org.apache.hadoop.util.VersionInfo 
+0

它通過在「hadoop」腳本中添加以下參數來解決問題。 -classpath「$(cygpath -pw」$ CLASSPATH「)」 – Manesh

+3

最初,$ {HADOOP_COMMON_HOME}/bin/hadoop下的「hadoop」腳本中的命令爲 - 「$ JAVA」$ JAVA_HEAP_MAX $ HADOOP_OPTS $ CLASS「$ @」 將其更改爲exec「$ JAVA」-classpath「$(cygpath -pw」$ CLASSPATH「)」$ JAVA_HEAP_MAX $ HADOOP_OPTS $ CLASS「$ @」 – Manesh

+0

如果此問題解決了您的問題,請在解答中詳細解釋並標記它作爲公認的解決方案,以便未來的人將從您的問題中受益。謝謝! – Derek

回答

3

我試圖在Windows Server 2008的版SP1 64位安裝的Hadoop 2.2.0時遇到了同樣的問題。

我已經安裝了cygwin64並配置了openssh。

user2870991的答案適用於我。 如下修改\ hadoop \ bin \ hadoop腳本,註釋原始的exec行並插入新行。

#exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]" 
    #add the -claspath "$(cygpath -pw "$CLASSPATH")" TO FIX the script running in cygwin 
    exec "$JAVA" -classpath "$(cygpath -pw "$CLASSPATH")" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]" 
2

添加以下語句hadoop-config.sh @行無285

CLASSPATH=`cygpath -wp "$CLASSPATH"` 

//Comments goes here 

if [ "$HADOOP_CLASSPATH" != "" ]; then 
    # Prefix it if its to be preceded 
    if [ "$HADOOP_USER_CLASSPATH_FIRST" != "" ]; then 
    CLASSPATH=${HADOOP_CLASSPATH}:${CLASSPATH} 
    else 
    CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH} 
    fi 
fi 

輸出:

[email protected] /cygdrive/e/hadoop/hadoop-2.2.0/bin 
$ ./hadoop version 
Hadoop 2.2.0 
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768 
Compiled by hortonmu on 2013-10-07T06:28Z 
Compiled with protoc 2.5.0 
From source with checksum 79e53ce7994d1628b240f09af91e1af4 
This command was run using /E:/hadoop/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar 
10

你也可以添加以下到您的〜/ .bashrc

export HADOOP_CLASSPATH=$(cygpath -pw $(hadoop classpath)):$HADOOP_CLASSPATH 

這爲我解決了它