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?
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.
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.
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 >.
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.
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.
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 tried the above solutions but the following worked on me
export JAVA_HOME=/usr/java/default
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:
- You have already config java and env (success
echo $JAVA_HOME) - 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
- 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.
来源:https://stackoverflow.com/questions/8827102/hadoop-error-java-home-is-not-set