2014-01-19 230 views
16

我按照「http://codesfusion.blogspot.com/2013/10/setup-hadoop-2x-220-on-ubuntu.html」在Ubuntu上安裝hadoop。但是,在檢查的Hadoop版本,我得到以下錯誤:無法找到或加載主類org.apache.hadoop.util.VersionInfo

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

此外,當我嘗試:HDFS的NameNode -format

我得到以下錯誤:

Error: Could not find or load main class org.apache.hadoop.hdfs.server.namenode.NameNode

的使用的java版本是:

java version "1.7.0_25" 
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2) 
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode) 
+0

可能的重複[什麼是「無法找到或加載主類」是什麼意思?](http://stackoverflow.com/questions/18093928/what-does-could-not-find-or-load-main-類平均值) –

+0

我的路徑已設置。我無法弄清楚什麼是錯的。 – usb

+0

他們有沒有預先打包的二進制文件?這通常是要走的路。 –

回答

1

嘗試檢查:

  • JAVA_HOME,在Hadoop的配置
  • 運行所有的路徑有關的變量:. ~/.bashrc(注意前面的點),使您的環境中使用這些變量。這個指南似乎沒有提到這一點。
+1

對不起,但你能詳細說明一下嗎?我爲我的hduser檢查過.bashrc,它包含了本教程中提到的所有路徑。我錯過了什麼嗎?我也跑了。 〜/ .bashrc – usb

+0

我的意思是說,在他完成'$ vi .bashrc'後的教程中設置了所有變量後,他並不真正運行該文件,因此變量不會導出到當前會話中。您必須在同一個終端中運行它,然後像'hadoop'一樣運行其他命令。或者重新登錄或重新啓動。我只是猜測,也許這是錯誤的另一個原因。 –

+0

感謝您的幫助,但我試圖重新登錄並重新啓動。似乎沒有工作。此外,我無法找到任何其他職位相同的錯誤,所以我認爲這應該是一件非常微不足道的事情。 – usb

6

您可能沒有正確地按照說明操作。這裏有一些事情,試圖幫助我們/你診斷是:

  • 在您運行hadoop version外殼,運行export向我們展示相關的環境變量列表。

  • 向我們展示您在/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件中放置的內容。

  • 如果以上都不給我們任何線索,那麼找到並使用文本編輯器(暫時)修改hadoop包裝器外殼腳本。在開頭附近的某處添加「set -xv」行。然後運行hadoop version,並告訴我們它產生了什麼。

+0

我得到這些上運行的出口: 聲明-x CLASSPATH = 「在/ usr /本地/ Hadoop的/股/的Hadoop /常用」 聲明-x HADOOP_COMMON_HOME = 「在/ usr /本地/ Hadoop的」 聲明-x HADOOP_HDFS_HOME =」在/ usr /本地/ Hadoop的」 聲明-x HADOOP_INSTALL = 「在/ usr /本地/ Hadoop的」 聲明-x HADOOP_MAPRED_HOME = 「在/ usr /本地/ Hadoop的」 聲明-x HOME = 「/家/ hduser」 聲明 - x JAVA_HOME =「/ usr/lib/jvm/jdk /」 declare -x PATH =「/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin :/ usr/games:/ usr/local/hadoop/bin:/ usr/local/hadoop/sbin「 declare -x YARN_HOME =」/ usr/local/hadoop「 – usb

+0

我只添加了」export JAVA_HOME =/usr/lib/jvm/jdk /「到hadoop-env.sh,休息是第四個就是這樣。 – usb

+0

你需要整個「hadoop-env.sh」文件嗎? – usb

2

將此行添加到〜/ .bash_profile爲我工作。

export HADOOP_PREFIX=/<where ever you install hadoop>/hadoop 

所以才:

  1. $ sudo的開放〜/ .bash_profile中再加入上述行
  2. $源在〜/ .bash_profile

希望這有助於(:

8

這是一個環境變量設置的問題。顯然,我沒有找到一個可以工作到現在的工程。依靠2.6.4。這是我們應該做的

export HADOOP_HOME=/home/centos/HADOOP/hadoop-2.6.4 
export HADOOP_INSTALL=$HADOOP_HOME 
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_CONF_DIR=$HADOOP_HOME 
export HADOOP_PREFIX=$HADOOP_HOME 
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec 
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH 
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop 

這些添加到你的.bashrc不要忘記做

source ~/.bashrc 

我想,是我的問題將得到解決。

0

我得到了那個錯誤,我通過編輯〜/來解決這個問題。在.bashrc 如下

export HADOOP_HOME=/usr/local/hadoop 
export PATH=$HADOOP_HOME/bin:$PATH 

然後打開終端,寫這個命令

source ~/.bashrc 

然後檢查

hadoop version 
+0

按照步驟,沒有爲我工作。 – Crt

+0

@Crt打開新的終端,並再次檢查 – Elsayed

+0

謝謝,但是,我試過了,並沒有工作。 – Crt

3

我面臨同樣的問題。雖然看起來很簡單,但是花了我兩個小時的時間。我嘗試了以上所有的東西,但沒有幫助。

我剛剛退出我所在的shell,並通過再次登錄到系統再次嘗試。然後事情奏效!

1

我得到了同樣的問題與hadoop 2.7.2 我應用了技巧後顯示我能夠啓動hdfs但後來我發現我使用的焦油檔案丟失了一些重要的作品。所以下載2.7.3一切正常,因爲它應該工作。

我的第一個建議是再次下載相同版本或專業的tar.gz。

如果您正在繼續閱讀...這是我如何解決問題... 全新安裝後,hadoop無法找到罐子。 我做了這個小伎倆:

我所在的位置的罐子
我做了一個文件夾的符號鏈接 $ HADOOP_HOME /股/的Hadoop /共同

ln -s $HADOOP_HOME/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib $HADOOP_HOME/share/hadoop/common 

爲version命令你需要的Hadoop -common-2.7.2.jar,這幫助我找到儲存在哪裏的罐子。

之後......

$ bin/hadoop version 
Hadoop 2.7.2 
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41 
Compiled by jenkins on 2016-01-26T00:08Z 
Compiled with protoc 2.5.0 
From source with checksum d0fda26633fa762bff87ec759ebe689c 
This command was run using /opt/hadoop-2.7.2/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib/hadoop-common-2.7.2.jar 

當然,任何的Hadoop/HDFS現在指揮的作品。

我再次是一個快樂的人,我知道這不是一個有禮貌的解決方案,但至少對我有用。

0

我添加了上述環境變量,但仍然無法工作。在我的〜/ .bashrc設置HADOOP_CLASSPATH如下爲我工作:

export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH

0

我用

export PATH=$HADOOP_HOME/bin:$PATH 

而不是

export PATH=$PATH:$HADOOP_HOME/bin 

然後,它爲我工作!

+0

這不應該改變任何東西...... – Crt

相關問題