19

I'm trying to get Hadoop running 'Local Mode' on my Windows machine. I've been using this guide: http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html

When I run the command: bin/hadoop, I get the following error message:

Error: JAVA_HOME is incorrectly set. Please update C:...\hadoop-2.7.1\conf\hadoop-env.cmd

Inside hadoop-env.cmd, I have the line: set JAVA_HOME=%JAVA_HOME%

When I type echo %JAVA_HOME% at the command line I get: C:\Java\jdk1.0.8_51

Even if I change the line in hadoop-env.cmd to: set JAVA_HOME=C:\Java\jdk1.0.8_51 I get the same error...

How could it be that my JAVA_HOME is incorrectly set?

Petro
  • 3,484
  • 3
  • 32
  • 59
Joseph Palermo
  • 327
  • 2
  • 3
  • 12

9 Answers9

28

If your JAVA_HOME path contains spaces, you must use the Windows 8.3 Pathname

Mohamed F
  • 794
  • 1
  • 8
  • 13
  • 2
    is right! Thanks for saving my day. Just want to make it more detial, if you use the default setting while installing JAVA, you will have to set the JAVA_HOME to something like "C:\Progra~1\Java\jdk1.8.0_xxx". (Don't forget to replace xxx to your actual jdk update id.) – Rongxin Zhang Dec 27 '16 at 06:45
  • Right! I also encountered the JAVA_HOME problem. But then, I got another error message "Error: Could not find or load main Trung" – Duong Trung Nghia Jan 26 '17 at 12:14
  • @Duong edit set HADOOP_IDENT_STRING=%USERNAME% to HADOOP_IDENT_STRING=username(without space) in hadoop-env.cmd file – Prasad De Silva Apr 22 '18 at 20:41
26

like the other answers, your java environment path must not contain space. The solution is as follows:

  1. In the cmd line, charge the directory that contain the jdk (in my case C:\Program Files\Java\jdk1.8.0_73).
  2. execute the following line "for %I in (.) do echo %~sI" to display the short name of your installed jdk (in my case C:\PROGRA~1\Java\JDK18~1.0_7)
  3. in the file "hadoop-env.cmd", change the line "JAVA_HOME=%JAVA_HOME%" with "JAVA_HOME=C:\PROGRA~1\Java\JDK18~1.0_7".
  4. run again the file "hadoop-env.cmd" and it will work correctly.
Mondher Sendi
  • 261
  • 3
  • 4
21
 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131\

Above configuration was throwing same error as yours. I updated above with below in hadoop-env.cmd which is infact SFN

set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_131\

This allowed me to change/have different java version than that of system.

Jabir
  • 2,776
  • 1
  • 22
  • 31
3

Try to place the java path in double-coats. Example:

JAVA_HOME="C:\Program Files\Java\jdk-12.0.1"   

It should work fine.

RiveN
  • 2,595
  • 11
  • 13
  • 26
Arun Giri
  • 31
  • 2
2

Use "%JAVA_HOME%" in conf\hadoop-env.cmd

nav3916872
  • 978
  • 13
  • 20
1

if your java environment path contains space, such as "C:\Program Files\java\xxxxx" , the word 《Program Files》 contains a space, so CMD can't identificate

this is the right answer

PeaSir
  • 11
  • 1
1

Try removing @ from @rem in hadoop-env.cmd and set JAVA_HOME=%JAVA_HOME%

rem The java implementation to use.  Required.

set JAVA_HOME=%JAVA_HOME%

Then try running hdfs namenode -format

This solution worked for me

0

In hadoop-env.cmd I changed %JAVA_HOME% to "C:\Program Files\openjdk-17_windows-x64_bin\jdk-17" with double quotation. It worked for me

set JAVA_HOME="C:\Program Files\openjdk-17_windows-x64_bin\jdk-17"

enter image description here

benjiDev
  • 41
  • 3
-2

in hadoop-config.xml, the logic is

if not exist %JAVA_HOME%\bin\java.exe ( echo Error: JAVA_HOME is incorrectly set. echo Please update %HADOOP_HOME%\conf\hadoop-env.cmd goto :eof )

if your java environment path contains space, such as "C:\Program Files\java\xxxxx" , the word 《Program Files》 contains a space, so CMD can't identificate

SO your can change the path instead.