Hadoop: «ERROR : JAVA_HOME is not set»

LinuxHadoopUbuntu 11.04

Linux Problem Overview


I'm trying to install Hadoop on Ubuntu 11.10. I set the JAVA_HOME variable in the file conf/hadoop-env.sh to:

# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

and then I execute these commands (Standalone Operation):

$ mkdir input 
$ cp conf/*.xml input 
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 
$ cat output/*

but I have the following error when executing the third command:

> ERROR : JAVA_HOME is not set

Is the JAVA_HOME variable not set correctly?

Linux Solutions


Solution 1 - Linux

Make sure that you have removed the comment tag and changed your JAVA_HOME in the hadoop-env.sh as well as the appropriate .bashrc and/or .profile:

# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

should be

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

You can set your JAVA_HOME and PATH for all users (make sure you haven't previously set this to the wrong path) in /etc/profile.

Also, don't forget to activate the new change by logging-out/in or by executing source /etc/profile.

Solution 2 - Linux

You should set JAVA_HOME in the hadoop-env.sh file also which is in the Hadoop configuration directory. By default the JAVA_HOME setting line is commented.

Solution 3 - Linux

Type echo $JAVA_HOME in your terminal to be sure your JAVA_HOME is set.

You can also type java -version to know what version of java you are actually using.

By the way, reading your description it seems your actually writing

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

in the file conf/hadoop-env.sh, you should write it in your terminal or in ~/.bashrc or ~/.profile then type source < path to modified file >.

Solution 4 - Linux

You can add in your .bashrc file:

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

and it will dynamically change when you update your packages.

Solution 5 - Linux

The solution that worked for me was setting my JAVA_HOME in /etc/environment

Though JAVA_HOME can be set inside the /etc/profile files, the preferred location for JAVA_HOME or any system variable is /etc/environment.

Open /etc/environment in any text editor like nano or vim and add the following line:

JAVA_HOME="/usr/lib/jvm/your_java_directory"

Load the variables:

source /etc/environment

Check if the variable loaded correctly:

echo $JAVA_HOME

Solution 6 - Linux

Copy this export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk to hadoop-env.sh file.

JAVA_HOME is the location where java binaries are present.

Solution 7 - Linux

I tried the above solutions but the following worked on me

export JAVA_HOME=/usr/java/default

Solution 8 - Linux

I tried changing /etc/environment:

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

on the slave node, it works.

Solution 9 - Linux

In some distributives(CentOS/OpenSuSe,...) will work only if you set JAVA_HOME in the /etc/environment.

Solution 10 - Linux

Here we provide simple steps to setup JAVA_HOME while installing of Hadoop

> Step1: Goto Java library path /lib jvm

Then set the JAVA_HOME & PATH in .bashrc file

Source : http://commandstech.com/hadoop-error-java_home-is-not-set-and-could-not-be-found-in-hadoop-installation/

> Step 2 : Once it is done then go with Hadoop env file then update it.

After once it is done then stop the daemons and start daemons once again.

Solution 11 - Linux

I solved this in my env, without modify hadoop-env.sh

You'd be better using /bin/bash as default shell not /bin/sh

Check these before:

  1. You have already config java and env (success echo $JAVA_HOME)
  2. right config hadoop

echo $SHELL in every node, check if print /bin/bash if not, vi /etc/passwd, add /bin/bash at tail of your username ref

> https://stackoverflow.com/questions/13046192/changing-default-shell-in-linux > > https://blog.csdn.net/whitehack/article/details/51705889

Solution 12 - Linux

  • hadoop ERROR : JAVA_HOME is not set

Above error is because of the space in between two words.

Eg: Java located in C:\Program Files\Java --> Space in between Program and files would cause the above problem. If you remove the space, it would not show any error.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkoukouView Question on Stackoverflow
Solution 1 - Linuxuser1489515View Answer on Stackoverflow
Solution 2 - LinuxnantitvView Answer on Stackoverflow
Solution 3 - Linuxalain.janinmView Answer on Stackoverflow
Solution 4 - LinuxPaulo FidalgoView Answer on Stackoverflow
Solution 5 - LinuxMuthukrishnanView Answer on Stackoverflow
Solution 6 - LinuxAmerican curlView Answer on Stackoverflow
Solution 7 - LinuxAjak6View Answer on Stackoverflow
Solution 8 - Linuxsiddhu salviView Answer on Stackoverflow
Solution 9 - LinuxnickcView Answer on Stackoverflow
Solution 10 - LinuxSpandana rView Answer on Stackoverflow
Solution 11 - LinuxSantonioView Answer on Stackoverflow
Solution 12 - LinuxArun Krishnan CpView Answer on Stackoverflow