29

私はUbuntu 12.04 LTSで作業しています。

疑似分散操作を行うために、hadoop クイックスタート マニュアルを調べています。シンプルで簡単に思えます (簡単です!)。

ただし、実行しようとすると、次のようstart-all.shになります。

localhost: Error: JAVA_HOME is not set.

この問題のスタックオーバーフローに関する他のすべてのアドバイスを読み、次のことを行って確実JAVA_HOMEに設定しました。

/etc/hadoop/conf/hadoop-env.sh設定しました

JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME

/etc/bash.bashrc設定しました

JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

which java戻り値:

/usr/bin/java

java –version作品

echo $JAVA_HOME戻り値:

/usr/lib/jvm/java-6-oracle

私はrootになって、端末に明示的に書いてみました:

$ JAVA_HOME=/usr/lib/jvm/java-6-oracle
$ export JAVA_HOME
$ start-all.sh

このエラーを解決する方法を教えていただければ幸いです。私はJAVA_HOME何とかオーバーライドされていると思っています。その場合、エクスポートをグローバルにする方法を説明していただけますか?

4

12 に答える 12

66

私はhadoop1.1を使用していますが、同じ問題に直面しました。

JAVA_HOME次のように変数を変更することで解決し/etc/hadoop/hadoop-env.shました。

export JAVA_HOME=/usr/lib/jvm/<jdk folder>
于 2013-01-22T15:54:23.563 に答える
21

この問題を解決する方法は、conf/hadoop-env.sh ファイル内の JAVA_HOME 変数をエクスポートすることです。

その変数を既に ~/.bashrc にエクスポートしているかどうかは問題ではありません。それでもエラーが表示されます。

したがって、 conf/hadoop-env.shを編集 し、「export JAVA_HOME」行のコメントを外して、適切なファイルシステム パス、つまり Java JDK へのパスを追加します。

# 使用する Java 実装。必須。
export JAVA_HOME="/path/to/java/JDK/"

于 2013-06-28T13:14:08.840 に答える
1

これをデバッグする方法は、start-all.shに「echo$JAVA_HOME」を配置することです。別のユーザー名で、または自分自身として、Hadoop環境を実行していますか?前者の場合、JAVA_HOME環境変数がそのユーザーに設定されていない可能性が非常に高くなります。

もう1つの潜在的な問題は、JAVA_HOMEを誤って指定し、指定した値がJDK/JREを指していないことです。JAVA_HOMEが正しく設定されていなくても、「whichjava」と「java-version」の両方が機能することに注意してください。

于 2013-01-14T20:34:53.850 に答える
1

このエラーは 180 行目から発生しています

if [[ -z $JAVA_HOME ]]; then
   echo "Error: JAVA_HOME is not set and could not be found." 1>&2
   exit 1
fi

libexec/hadoop-config.sh

$JAVA_HOMEそのスクリプトでエコーを試してください。認識しない場合は、

これを使用して見つけますJAVA_HOME

$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

ラインを交換します

export JAVA_HOME=${JAVA_HOME}/etc/hadoop/hadoop-env.sh上記のコマンドで取得した JAVA_HOME を使用します 。

于 2016-12-20T08:42:18.430 に答える
1

また、 hadoop 1.1で同様の問題に直面していましたが、JAVA_HOMEコメントされ ていることに気づきませんでした。hadoop/conf/hadoop-env.sh

そうだった

/#JAVA_HOME=/usr/lib/jvm/java-6-oracle

に変更する必要がありました

JAVA_HOME=/usr/lib/jvm/java-6-oracle
于 2017-10-26T09:05:13.190 に答える
0

JAVA_HOME変数を変更しますconf/hadoop-env.sh

export JAVA_HOME=/etc/local/java/<jdk folder>
于 2016-04-13T14:33:41.120 に答える
0

代替が正しいものを指しているかどうかを確認してください。実際には別のバージョンを指しており、インストールされている別のバージョンの hadoop-env.sh を変更しようとしている可能性があります。

-alternatives --install /etc/hadoop/conf [generic_name] [正しいパス] 優先度 {代替手段の man ページをさらに確認するため}

代替を手動で設定するには、

代替 --set [一般名] [現在のパス]。

于 2016-01-19T00:07:35.493 に答える