11

JAVA_HOME正しく設定しました。設定するとecho、正しい値が表示されます。

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

hadoop-env.shJAVA_HOMEにも値を入れました。

$ grep JAVA_HOME conf/hadoop-env.sh 
# The only required environment variable is JAVA_HOME.  All others are
# set JAVA_HOME in this file, so that it is correctly defined on
export JAVA_HOME="/usr/lib/jvm/java-6-openjdk-amd64/"

これらすべてにもかかわらず、hadoop はJAVA_HOME変数がまったく異なることを示しています。この値をどこで取得するのかわかりません。助言がありますか?

$ hadoop noname -format
Warning: $HADOOP_HOME is deprecated.

/usr/bin/hadoop: line 320: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
/usr/bin/hadoop: line 390: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
4

9 に答える 9

6

「 /usr/bin/java /bin/java が存在しません」というエラーが発生しました

~/.bashrc で JAVA_HOME を に設定しました/usr/bin/java。をhadoop/etc/hadoop-config.sh使用していることがわかりました$JAVA_HOME/bin/java。そのエラーを説明しました。ただ、/bin/java を削除しても直りませんでした。私の答えを見つけるために、私は

cd /usr/bin/java
ls -al

そして私は見た

lrwxrwxrwx 1 root root 46 Jul 22 16:01 /usr/bin/java -> /etc/alternatives/java

私が最も気づいたのは、私の bash プロンプトで、矢印の左側が青緑で、矢印の右側が緑だったことです。シンボリックリンクかもしれないと思いました。今回もこれを実行しls -al( -alは非常に重要です)、シンボリック リンクの場所 (以下を参照) を調べたところ、別のシンボリック リンクのように見えることに気付きました。

root@groovy:~# ls /etc/alternatives/java -al
lrwxrwxrwx 1 root root 46 Jul 22 16:01 /etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

矢印の右側の値を取り、 ~/.bashrc に入れました


最終構成

~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
export PATH=$PATH:$JAVA_HOME

hadoop/etc/hadoop/hadoop-env.sh

export JAVA_HOME=${JAVA_HOME}

hadoop/libexec/hadoop-config.sh

EXPORT JAVA_HOME=$JAVA_HOME/bin

最初にJDKをインストールしたことに注意してくださいsudo apt-get install default-jdk

于 2016-08-04T17:19:27.570 に答える
2

2 つのhadoop-env.shファイルがあります。1 つはconfディレクトリの下のサブディレクトリhadoopにあり、もう 1 つは の下にあり/etc/hadoopます。$JAVA_HOME両方を変更する必要があります。

于 2014-03-15T22:34:46.223 に答える
0

echo $JAVA_HOME面白い解決策を見つけました:<br>/usr/bin/java
echo export $JAVA_HOME=/usr/ >> conf/hadoop-env.sh

于 2014-03-21T07:09:34.643 に答える
0

これは理想的なソリューションではないと確信しています。しかし、これは私がしたことです:

静的に(とにかく静的に見える)定義されたパスに/usr/local/hadoop/bin/hadoopいつ設定されるかを確認するために、全体にエコーステートメントを配置しましたJAVA_HOME/usr/lib/jvm/java-6-sun

これはほとんどすぐに起こると言えます。そして、なぜこれが起こったのか分かりませんでした。Javaをインストール/usr/local/jdk1.7.0_17し、パスとすべてにJAVA_HOMEを正しく設定しました。面白いことに、私は Java 6 をインストールしていません!

ここにハッキーな部分があります。java-6-sun が見つかるはずの場所に移動し、Java インストールへのシンボリック リンクを設定しました。

cd /usr/lib/jvm
sudo ln -s /usr/local/jdk1.7.0_17/ java-6-sun

その後、すべてが機能しました。私は知っている非常にハッキーですが、おそらくこの投稿は他の誰かを助けることができます.

于 2013-03-11T19:30:10.207 に答える