第一次在配置hadoop的环境的时候,按照视频里老师所讲的步骤执行,最后结果发现我最后在执行hadoop格式化的时候出现了“Warning: $HADOOP_HOME is deprecated” 这样一个警告,当时我并没有在意这个警告,以为只是一个警告而已。但是当我执行 start-all.sh 启动Hadoop时,也同样报了一个同样的警告信息“Warning: $HADOOP_HOME is deprecated.”。最后启动之后,并没有启动名称节点和jobtraceker。其主要原因就是这个警告所造成的。其解决办法如下:

方法一:(推荐)

在当前用户home/.bash_profile里增加一个环境变量:

export HADOOP_HOME_WARN_SUPPRESS=1

注:修改完.bash_profile后需要执行source操作使其生效

 

方法二:(网上的,不推荐)

网上的说法是因为Hadoop本身对HADOOP_HOME做了判断,具体在bin/hadoop和bin/hadoop-config.sh里。在hadoop-config.sh里有如下的配置:

if [ "$HADOOP_HOME_WARN_SUPPRESS" = "" ] && [ "$HADOOP_HOME" != "" ]; then
  echo "Warning: \$HADOOP_HOME is deprecated." 1>&2
  echo 1>&2
fi

注释掉hadoop-config.sh里的上面给出的这段if fi配置。

  修改之后的结果如下:可以看出这次名称节点已经启动了,jobtracker也启动了。问题解决。

starting namenode, logging to /hadoop/hadoop/libexec/../logs/hadoop-root-namenode-hadoop.out
localhost: starting datanode, logging to /hadoop/hadoop/libexec/../logs/hadoop-root-datanode-hadoop.out
localhost: starting secondarynamenode, logging to /hadoop/hadoop/libexec/../logs/hadoop-root-secondarynamenode-hadoop.out
starting jobtracker, logging to /hadoop/hadoop/libexec/../logs/hadoop-root-jobtracker-hadoop.out
localhost: starting tasktracker, logging to /hadoop/hadoop/libexec/../logs/hadoop-root-tasktracker-hadoop.out