2016-11-27 71 views
0

我試圖安裝Hadoop並運行它。 而且我確定我已經成功安裝了Hadoop和格式化的namenode。 然而,當我試圖運行start-dfs.sh,我得到了以下錯誤:hadoop無法啓動start-dfs.sh

localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-wenruo-namenode-linux.out localhost: /usr/local/hadoop/bin/hdfs: line 304: /usr/local/hadoop/usr/lib/jvm/java-8-oracle/bin/java: No such file or directory

我JAVA_HOME低於:

echo $JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64

我hadoop-env.sh文件:

export JAVA_HOME=${JAVA_HOME}

Hadoop仍然在尋找JDK8,因爲我已經將JAVA_HOME設置爲JDK7了?

非常感謝。

+0

很難說沒有看到文件(哪個hadoop版本?)。在hadoop目錄中使用grep命令檢查這個路徑來自'/ usr/local/hadoop/usr/lib/jvm/java-8-oracle/bin/java',然後更新你的bashrc導出你的java並刷新你的shell。所以你會在全球範圍內擁有它。剛剛在腳本中導出之後,還爲JAVA_HOME添加一個回顯。 –

+0

@Nicolas Fontenele嗨尼古拉斯,正如你所看到的,我回應JAVA_HOME並獲得JDK7,而不是JDK8。只是不知道爲什麼hadoop仍在尋找JDK8。 – wenruo

+0

它證明了在當前的env中你有正確的JAVA_HOME。但是,例如,如果您從不同的shell運行hadoop,那麼它可能導出了另一個java-home。你有沒有采取我的建議從java 8 grep和更新bashrc?這是一個單一的節點設置?由於你的java本地本地,但不在其他節點,它會失敗,應該是。 –

回答

0

離開它。問題已解決。 在hadoop-env.sh中,我將export JAVA_HOME = $ {JAVA_HOME}更改爲echo $ JAVA_HOME/usr/lib/jvm/java-7-openjdk-amd64。 它看起來像$ {JAVA_HOME}不起作用。

0

一般來說,每個Hadoop發行版/版本都應該有幾個基本腳本文件,如果您有紗線,則可以將此JAVA_HOME環境變量設置爲yarn-env.sh文件。

同樣取決於您的hadoop版本,您可能還有* -site.xml文件中的路徑,例如hdfs-site.xml,core-site.xml,yarn-site.xml,mapred-site.xml,和其他一些取決於你有什麼服務。很可能您的hadoop-env.sh更新沒有重新生成客戶端配置文件,除非您通過羣集管理器應用程序執行了重新部署的客戶端配置文件。

有時候,我也發現可以設置使用系統bin/java可執行文件。你可以使用下面的命令找出你的操作系統在你的bin /路徑中有什麼java。

的readlink -f在/ usr/bin中/ JAVA 在/ usr /斌/ Java的版本

你還每個節點上更新hadoop-env.sh然後重新啓動所有服務,以確保它再度回升?