Hadoop守护进程未停止

Hadoop守护进程未停止,hadoop,hdfs,Hadoop,Hdfs,我试图通过./stop-all.sh脚本停止hadoop中的守护进程,但它给出了以下消息: 没有工作追踪者可以停止 localhost:没有要停止的tasktracker 没有要停止的名称节点 localhost:没有要停止的数据节点 localhost:没有要停止的secondarynamenode 我尝试使用jps查看hadoop是否正在运行,结果显示: 27948第二名称节点 27714名称节点 28136任务跟踪器 27816数据节点 28022工作追踪者 8174日元 也就是说,它正在

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

没有工作追踪者可以停止 localhost:没有要停止的tasktracker 没有要停止的名称节点 localhost:没有要停止的数据节点 localhost:没有要停止的secondarynamenode

我尝试使用jps查看hadoop是否正在运行,结果显示:

27948第二名称节点 27714名称节点 28136任务跟踪器 27816数据节点 28022工作追踪者 8174日元

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


我正在运行supergroup用户指定的stop-all.sh脚本,这意味着权限没有问题

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

如果:

  • 这些文件已被(某人或某事)删除,或
  • 环境变量$HADOOP_PID_DIR在您启动deamons后已更改,或者
  • 停止执事的用户不是启动执事的用户
然后hadoop将显示您看到的错误消息

hadoop-daemon.sh文件中的选定部分(适用于1.0.0):


在这种情况下,如何停止群集?最后,我可以停止群集。我做到了:ps-ef | grep java它显示了进程id,我杀死了它们。再次启动集群,一切正常。您也可以使用“jps”而不是“ps-ef | grep java”来发现守护进程的pid jps并不总是显示所有进程(以我的经验)我们有一个redhat守护程序,它可以删除/tmp目录中10天以上的文件…似乎是一个默认脚本…/tmp对于这些东西来说是一个非常糟糕的默认脚本,但是hadoop在整个游戏中都有。
#   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
  ;;