问题描述:
1、Hadoop版本升级到3.0之后,每次执行hadoop命令都会提示下面的警告,感觉很烦,必须盘它!~
WARNING: HADOOP_PREFIX has been replaced by HADOOP_HOME. Using value of HADOOP_PREFIX.
查看环境变量,发现这2个变量都配置了
[hadoop@client1 hadoop]$ echo $HADOOP_PREFIX
/opt/hadoop
[hadoop@client1 hadoop]$ echo $HADOOP_HOME
/opt/hadoop
2、在hadoop安装目录下搜索一下这个变量在哪里
[hadoop@client1 hadoop]$ grep -ri hadoop_prefix
libexec/hadoop-config.sh:#hadoop_deprecate_envvar HADOOP_PREFIX HADOOP_HOME
发现在libexec目录下,在hadoop-config.sh脚本第70行中出现该关键字
69
70 hadoop_deprecate_envvar HADOOP_PREFIX HADOOP_HOME
71
而 hadoop_deprecate_envvar 函数来自于同级目录下的`hadoop-functions.sh`脚本,查看该函数的作用就是打印过时的变量信息。并把旧的变量的值换到新的变量上面
function hadoop_deprecate_envvar
{
local oldvar=$1
local newvar=$2
local oldval=${!oldvar}
local newval=${!newvar}
if [[ -n "${oldval}" ]]; then
hadoop_error "WARNING: ${oldvar} has been replaced by ${newvar}. Using value of ${oldvar}."
# shellcheck disable=SC2086
eval ${newvar}=\"${oldval}\"
# shellcheck disable=SC2086
newval=${oldval}
# shellcheck disable=SC2086
eval ${newvar}=\"${newval}\"
fi
}
到这里就简单多了,由于我们两个环境变量都配置了,就不需要它帮忙替换了,,
1、直接在hadoop-config.sh脚本第70行中注释掉就可以了(前提是正常配置了HADOOP_HOME)~
2、或者在hadoop-functions.sh脚本中,把打印警告信息注释就可以了,就达到掩耳盗铃的目的了~~
3、找到所有的HADOOP_PREFIX替换为HADOOP_HOME,治标治本
大家根据自己的情况选择吧。。。。