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?
This question is related to
linux
hadoop
ubuntu-11.04
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.
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
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.
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
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:
echo $JAVA_HOME
)echo $SHELL
in every node, check if print /bin/bash
if not, vi /etc/passwd
, add /bin/bash
at tail of your username
ref
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.
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.
I tried the above solutions but the following worked on me
export JAVA_HOME=/usr/java/default
In some distributives(CentOS/OpenSuSe,...) will work only if you set JAVA_HOME in the /etc/environment.
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 >
.
I tried changing /etc/environment
:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
on the slave node, it works.
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.
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
.
Source: Stackoverflow.com