即使已导出,也找不到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
的行的注释。您是否能够解决此问题?