Hadoop守护进程没有停止

时间:2012-05-09 08:28:25

标签: hadoop hdfs

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

没有职员跟踪停止 localhost:没有tasktracker停止 没有名字要停止 localhost:没有datanode停止 localhost:没有要停止的secondarynamenode

我试着看看hadoop在使用jps后是否正在运行,它显示:

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

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

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

1 个答案:

答案 0 :(得分:4)

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

如果:

  • 这些文件已被删除(由某人或某事)或
  • 自您启动deamons后,env变量$ HADOOP_PID_DIR已更改,或
  • 停止deamons的用户不是启动它们的用户

然后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
  ;;