8

疑似分散操作でHadoopの実装に取り​​組んでいると、 JAVA_HOME変数が設定されていないという例外が発生しましたが、エコーしようとすると設定されていました。

変数はconf/hadoop-env.sh(編集済みexport JAVA_HOME=/usr/lib/jvm/java-6-sun)に事前設定されていbash.bashrcます。

vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ echo $JAVA_HOME
/usr/lib/jvm/java-6-sun
vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ bin/start-all.sh
starting namenode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-namenode-vardan-HP-G62-Notebook-PC.out
localhost: starting datanode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-datanode-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set. 
localhost: starting secondarynamenode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-secondarynamenode-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set. 
starting jobtracker, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-jobtracker-vardan-HP-G62-Notebook-PC.out 
localhost: starting tasktracker, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-tasktracker-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set.
4

9 に答える 9

4

./conf/hadoop-env.shに次の行を追加しただけです。

# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/latest

そしてそれは助けになりました

于 2012-05-27T20:20:43.677 に答える
3

bin/start-all.shオーバーライドしないかどうかを確認しますJAVA_HOME

たぶんecho $JAVA_HOME、それらのバイナリを実行する直前にそのスクリプトの中に入れますか?

于 2012-02-08T12:02:01.120 に答える
3

設定したJAVA_HOME変数set JAVA_HOME=は、現在のシェルにのみ関連します。実行時に新しいシェルを開始する場合bin/start-all.sh、環境変数を「エクスポート」して、グローバルスコープで使用できるようにする必要があります。

export JAVA_HOME=/usr/lib/jvm/java-6-sun
于 2012-02-08T12:03:43.877 に答える
1

java1.6.xのインストール

  1. 「jdk-6u32-linux-i586.bin」をダウンロード
  2. sh jdk-6u32-linux-i586.bin

  3. mv / etc / Alternatives / java / etc / Alternatives / java_bak mv / etc / Alternatives / javac / etc / Alternatives / javac_bak

  4. リンクの作成ln-s/opt/jdk1.6.0_32/bin/java / etc / Alternatives / java ln -s /opt/jdk1.6.0_32/bin/javac / etc / Alternatives / javac

5.javaバージョン

-----------これを見る必要があります--------------------------------javaバージョン" 1.6.0_32 "Java(TM)SEランタイム環境(ビルド1.6.0_32-b05)

Java HotSpot(TM)クライアントVM(ビルド20.7-b02、混合モード、共有)

于 2012-05-29T09:18:59.340 に答える
0

マシンで物理的に、またはsshを使用してコンソールを使用してログインすると、.bash_profileファイル "JAVA_HOME = / usr / lib / jvm / java-6-sun"に書き込もうとすると、.bash_profileが実行されます。 / bin/bashまたは別の端末を実行するとbashrcが開きます

start-all.sh内に書き込んでみることもできます

JAVA_HOMEのパスが正しいことを確認してください

于 2012-02-08T12:16:57.963 に答える
0

Ubuntu Precise+CDH4でも同じ問題が発生します...

簡単に言うと、CDH4はbigtopを使用し、JAVA_HOMEを設定する最も簡単な方法は、次のような/ etc / default/bigtop-utilsファイルを編集することです。

エクスポートJAVA_HOME=/ usr / lib / jvm / jdk1.6.0_43 / jre /

注:CDH4を適切にインストールした後、hadoop-env.shファイルが見つかりませんでした。

于 2013-05-09T01:26:22.197 に答える
0

問題は、dfsデーモンとmapreduceデーモンを初期化するスクリプトの環境にJAVA_HOMEが定義されていないことです。

おそらく、HDFSとMapReduceを実行するとき、その実行環境はスクリプト$ HADOOP_HOME / conf/hadoop-env.shで指定されたものです。したがって、JAVA_HOMEを$ HADOOP_HOME / conf/hadoop-env.shで定義するだけで十分です。

export JAVA_HOME=jdk-home-path

そうでなければ、これが十分でない場合、問題は、使用される構成環境(hadoop-env.sh)が私たちが期待しているものではないことである可能性があります。hadoopは、別の値を選択するか、見つからない場合はデフォルト値を選択します。最速の解決策は、hadoop-env.shスクリプトが配置されるconfディレクトリを定義することです。HADOOP_CONF_DIR環境変数を設定するだけで十分です。

export HADOOP_CONF_DIR=hadoop-home-path/conf
于 2014-03-25T15:47:29.450 に答える
0

ファイルに追加でき.bashrcます:

export JAVA_HOME = $(readlink -f / usr / bin / java | sed "s:bin / java ::")

パッケージを更新してHadoopで使用されると、動的に変化します。

于 2014-11-11T14:25:48.910 に答える
0

たぶん、次のように$ JAVA_HOME構成を確認する必要があります。1。for:hadoop-home-path / conf / hadoop-env.sh 2. for
:hadoop-home-path / etc / hadoop / hadoop-env.sh hadoop-1.x
hadoop-2.x

于 2015-04-03T04:59:41.817 に答える