4

我试图通过 ./stop-all.sh 脚本停止 hadoop 中的守护进程,但它给出了以下消息:

没有jobtracker停止localhost:没有tasktracker停止没有namenode停止localhost:没有datanode停止localhost:没有secondarynamenode停止

我尝试使用 jps 查看 hadoop 是否在此之后运行,它显示:

27948 SecondaryNameNode 27714 NameNode 28136 TaskTracker 27816 DataNode 28022 JobTracker 8174 Jps

也就是说,它正在正确运行所有守护进程。我还检查了 hadoop dfs -ls / 以查看我是否能够连接到 hdfs。它正在工作。

我正在按超级组用户的意思运行 stop-all.sh 脚本,权限没有问题。

4

1 回答 1

4

如果启动/停止脚本在 $HADOOP_PID_DIR 文件夹(默认为 /tmp)中找不到 pid 文件,则会显示此消息。

如果:

  • 这些文件已被删除(由某人或某事),或
  • 环境变量 $HADOOP_PID_DIR 自您启动守护程序以来已更改,或者
  • 停止守护进程的用户不是启动它们的用户

然后 hadoop 将显示您看到的错误消息。

从 hadoop-daemon.sh 文件中选择的部分(对于 1.0.0):

#   HADOOP_IDENT_STRING   A string representing this instance of hadoop. $USER by default

if [ "$HADOOP_IDENT_STRING" = "" ]; then
  export HADOOP_IDENT_STRING="$USER"
fi

# ....

if [ "$HADOOP_PID_DIR" = "" ]; then
  HADOOP_PID_DIR=/tmp
fi    

# ....

pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid

# ....

(stop)

  if [ -f $pid ]; then
    if kill -0 `cat $pid` > /dev/null 2>&1; then
      echo stopping $command
      kill `cat $pid`
    else
      echo no $command to stop
    fi
  else
    echo no $command to stop
  fi
  ;;
于 2012-05-09T10:36:25.027 回答