即使已导出,也找不到JAVA_主页

即使已导出,也找不到JAVA_主页,java,bash,ubuntu,hadoop,yarn,Java,Bash,Ubuntu,Hadoop,Yarn,当我回显$JAVA_HOME时,我得到以下信息: $ echo $JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64 10.0.1.19X: Error: JAVA_HOME is not set and could not be found. 10.0.1.19Y: Error: JAVA_HOME is not set and could not be found. 10.0.1.19Z: Error: JAVA_HOME is not set

当我回显
$JAVA_HOME
时,我得到以下信息:

$ echo $JAVA_HOME
/usr/lib/jvm/java-1.7.0-openjdk-amd64
10.0.1.19X: Error: JAVA_HOME is not set and could not be found.
10.0.1.19Y: Error: JAVA_HOME is not set and could not be found.
10.0.1.19Z: Error: JAVA_HOME is not set and could not be found.
10.0.1.19A: Error: JAVA_HOME is not set and could not be found.
当我运行我的
warn Start.sh
脚本时,我得到以下结果:

$ echo $JAVA_HOME
/usr/lib/jvm/java-1.7.0-openjdk-amd64
10.0.1.19X: Error: JAVA_HOME is not set and could not be found.
10.0.1.19Y: Error: JAVA_HOME is not set and could not be found.
10.0.1.19Z: Error: JAVA_HOME is not set and could not be found.
10.0.1.19A: Error: JAVA_HOME is not set and could not be found.
hadoop config.sh中存在什么内容:

# Attempt to set JAVA_HOME if it is not set
if [[ -z $JAVA_HOME ]]; then
  # On OSX use java_home (or /Library for older versions)
  if [ "Darwin" == "$(uname -s)" ]; then
    if [ -x /usr/libexec/java_home ]; then
      export JAVA_HOME=($(/usr/libexec/java_home))
    else
      export JAVA_HOME=(/Library/Java/Home)
    fi
  fi

  # Bail if we did not detect it
  if [[ -z $JAVA_HOME ]]; then
    echo "Error: JAVA_HOME is not set and could not be found." 1>&2
    exit 1
  fi
fi
你知道潜在的问题是什么吗

以下是我用作参考的
start warn.sh
脚本:

#!/usr/bin/env bash

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# Start all yarn daemons.  Run this on master node.

echo "starting yarn daemons"

bin=`dirname "${BASH_SOURCE-$0}"`
bin=`cd "$bin"; pwd`

DEFAULT_LIBEXEC_DIR="$bin"/../libexec
HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
. $HADOOP_LIBEXEC_DIR/yarn-config.sh

# start resourceManager
"$bin"/yarn-daemon.sh --config $YARN_CONF_DIR  start resourcemanager
# start nodeManager
"$bin"/yarn-daemons.sh --config $YARN_CONF_DIR  start nodemanager
# start proxyserver
#"$bin"/yarn-daemon.sh --config $YARN_CONF_DIR  start proxyserver
下面是完整的
warn config.sh
bash脚本:

bin=`which "$0"`
bin=`dirname "${bin}"`
bin=`cd "$bin"; pwd`

DEFAULT_LIBEXEC_DIR="$bin"/../libexec
HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
if [ -e "${HADOOP_LIBEXEC_DIR}/hadoop-config.sh" ]; then
  . ${HADOOP_LIBEXEC_DIR}/hadoop-config.sh
elif [ -e "${HADOOP_COMMON_HOME}/libexec/hadoop-config.sh" ]; then
  . "$HADOOP_COMMON_HOME"/libexec/hadoop-config.sh
elif [ -e "${HADOOP_HOME}/libexec/hadoop-config.sh" ]; then
  . "$HADOOP_HOME"/libexec/hadoop-config.sh
else
  echo "Hadoop common not found."
  exit
fi

# Same glibc bug that discovered in Hadoop.
# Without this you can see very large vmem settings on containers.
export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4}

#check to see if the conf dir is given as an optional argument
if [ $# -gt 1 ]
then
    if [ "--config" = "$1" ]
          then
              shift
              confdir=$1
              shift
              YARN_CONF_DIR=$confdir
    fi
fi

# Allow alternate conf dir location.
export YARN_CONF_DIR="${HADOOP_CONF_DIR:-$HADOOP_YARN_HOME/conf}"

#check to see it is specified whether to use the slaves or the
# masters file
if [ $# -gt 1 ]
then
    if [ "--hosts" = "$1" ]
    then
        shift
        slavesfile=$1
        shift
        export YARN_SLAVES="${YARN_CONF_DIR}/$slavesfile"
    fi
fi

我不知道为什么它不起作用。可能有很多原因。尝试将JAVA_HOME添加到hadoop.env.sh。它应该是这样工作的:您在其中回显JAVA_HOME的shell与稍后启动脚本的shell相同吗?环境不是全局导出的,而是留在shell中。检查此问题:查找文件
hadoop env.sh
,并取消对导出
JAVA\u HOME
的行的注释。您是否能够解决此问题?我不确定为什么它不起作用。可能有很多原因。尝试将JAVA_HOME添加到hadoop.env.sh。它应该是这样工作的:您在其中回显JAVA_HOME的shell与稍后启动脚本的shell相同吗?环境不是全局导出的,而是留在shell中。检查此问题:查找文件
hadoop env.sh
,并取消对导出
JAVA\u HOME
的行的注释。您是否能够解决此问题?