You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bigtop.apache.org by "Tsuyoshi OZAWA (JIRA)" <ji...@apache.org> on 2014/01/23 10:59:38 UTC

[jira] [Commented] (BIGTOP-1012) bigtop-detect-javahome should check PATH if JAVA_HOME is unset

    [ https://issues.apache.org/jira/browse/BIGTOP-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13879807#comment-13879807 ] 

Tsuyoshi OZAWA commented on BIGTOP-1012:
----------------------------------------

+1 for the change(non binding). JDK can be install anywhere. This is a log when we faced a problem by using bigtop-detect-javahome.

{code}
[root@localhost hadoop-hdfs]# which hdfs
/usr/bin/hdfs
bash-4.1$ whoami
hdfs
bash-4.1$ echo $JAVA_HOME
/home/user1/jdk1.6.0_43
{code}

{code}
[root@localhost hadoop-hdfs]# sudo -u hdfs bash -x hdfs
+ '[' -e /usr/libexec/bigtop-detect-javahome ']'
+ . /usr/libexec/bigtop-detect-javahome
++ '[' -r /etc/default/bigtop-utils ']'
++ . /etc/default/bigtop-utils
++ '[' -z '' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/j2sdk1.6-sun/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/jvm/java-6-sun/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre//bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/jvm/j2sdk1.6-oracle/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/jvm/j2sdk1.6-oracle/jre/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/java/jdk1.6*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/java/jre1.6*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/java/jdk1.7*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/java/jre1.7*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /Library/Java/Home/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/java/default/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/jvm/default-java/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/jvm/java-openjdk/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e /usr/lib/jvm/jre-openjdk/bin/java ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/lib/jvm/java-1.7.0-openjdk*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/lib/jvm/java-7-openjdk*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*/bin/java' ']'
++ for candidate in /usr/lib/j2sdk1.6-sun /usr/lib/jvm/java-6-sun '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*' '/usr/lib/jvm/java-1.6.0-sun-1.6.0.*/jre/' /usr/lib/jvm/j2sdk1.6-oracle /usr/lib/jvm/j2sdk1.6-oracle/jre '/usr/java/jdk1.6*' '/usr/java/jre1.6*' '/usr/java/jdk1.7*' '/usr/java/jre1.7*' /Library/Java/Home /usr/java/default /usr/lib/jvm/default-java /usr/lib/jvm/java-openjdk /usr/lib/jvm/jre-openjdk '/usr/lib/jvm/java-1.7.0-openjdk*' '/usr/lib/jvm/java-7-openjdk*' '/usr/lib/jvm/java-1.6.0-openjdk-1.6.*' '/usr/lib/jvm/jre-1.6.0-openjdk*'
++ '[' -e '/usr/lib/jvm/jre-1.6.0-openjdk*/bin/java' ']'
+ export HADOOP_LIBEXEC_DIR=//usr/lib/hadoop/libexec
+ HADOOP_LIBEXEC_DIR=//usr/lib/hadoop/libexec
+ exec /usr/lib/hadoop-hdfs/bin/hdfs
Error: JAVA_HOME is not set and could not be found.
{code}


> bigtop-detect-javahome should check PATH if JAVA_HOME is unset
> --------------------------------------------------------------
>
>                 Key: BIGTOP-1012
>                 URL: https://issues.apache.org/jira/browse/BIGTOP-1012
>             Project: Bigtop
>          Issue Type: Bug
>            Reporter: Rick Schultz
>
> Even in cases where java is in a user's $PATH, bigtop-detect-javahome will only check a fixed list of locations and leave JAVA_HOME unset if java is installed somewhere else.  Folks who install a non-distro JRE/JDK are likely to put it into /usr/local or /opt and modify PATH appropriately.
> Other projects (cf. FLUME-1154) are working around this in their own init scripts.  This should be handled centrally within the bigtop-detect-javahome script itself.
> {code}
> diff --git a/bigtop-packages/src/common/bigtop-utils/bigtop-detect-javahome b/bigtop-packages/src/common/bigtop-utils/bigtop-detect-javahome
> index de64e1d..b3b858a 100644
> --- a/bigtop-packages/src/common/bigtop-utils/bigtop-detect-javahome
> +++ b/bigtop-packages/src/common/bigtop-utils/bigtop-detect-javahome
> @@ -52,3 +52,9 @@ if [ -z "$JAVA_HOME" ]; then
>    done
>  fi
>  
> +if [ -z "${JAVA_HOME}" ] ; then
> +  JAVA_DEFAULT=$(type -p java)
> +  if [ -n "$JAVA_DEFAULT" ] ; then 
> +    export JAVA_HOME=$(cd $(dirname $(readlink -f $JAVA_DEFAULT))/..; pwd)
> +  fi
> +fi
> {code}
> This can be reproduced installing Cloudera [CDH4|http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-Installation-Guide/cdh4ig_topic_4_4.html] on a host where java is in /usr/local/bin:
> {code}
> ubuntu:~$ type -a java
> java is /usr/local/bin/java
> ubuntu:~$ sudo vi /etc/apt/sources.list.d/cloudera.list
> ubuntu:~$ curl -s http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh/archive.key| sudo apt-key add -
> OK
> ubuntu:~$ sudo apt-get update
> (...)
> ubuntu:~$ sudo apt-get install hadoop-0.20-mapreduce-jobtracker
> Reading package lists... Done
> (...)
> Setting up hadoop-hdfs (2.0.0+1357-1.cdh4.3.0.p0.21~precise-cdh4.3.0) ...
> Setting up hadoop-0.20-mapreduce (2.0.0+1357-1.cdh4.3.0.p0.21~precise-cdh4.3.0) ...
> Setting up hadoop-0.20-mapreduce-jobtracker (2.0.0+1357-1.cdh4.3.0.p0.21~precise-cdh4.3.0) ...
>  * Starting Hadoop jobtracker: 
> +======================================================================+
> |      Error: JAVA_HOME is not set and Java could not be found         |
> +----------------------------------------------------------------------+
> | Please download the latest Sun JDK from the Sun Java web site        |
> |       > http://java.sun.com/javase/downloads/ <                      |
> |                                                                      |
> | Hadoop requires Java 1.6 or later.                                   |
> | NOTE: This script will find Sun Java whether you install using the   |
> |       binary or the RPM based installer.                             |
> +======================================================================+
> invoke-rc.d: initscript hadoop-0.20-mapreduce-jobtracker, action "start" failed.
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)