2012-05-09 123 views
3

我试图通过./stop-all.sh脚本停止Hadoop中的守护进程,但它提供了以下消息:Hadoop守护进程不会停止

没有的JobTracker停止 本地主机:没有的TaskTracker停止 没有的NameNode停止 本地主机:没有数据节点停止 本地主机:没有secondarynamenode停止

我想看看是否Hadoop是该使用JPS运行后,它显示:

27948 secondaryNameNode 2771 4 NameNode的 28136的TaskTracker 27816的DataNode 28022 JobTracker的 8174个JPS

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

我被超群的用户意义运行stop-all.sh剧本,没有与权限没有问题。

回答

4

如果启动/停止脚本不能找到一个pid文件得到了在$ HADOOP_PID_DIR文件夹中的守护进程(默认为/ tmp)中显示此消息。

如果:

  • 这些文件已被删除(由某人或某事),或
  • 自启动的守护程序的环境变量$ 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 
    ;; 
+0

如何停止我的群集在这种情况下? –

+0

最后,我可以停止群集。我所做的: PS英法| grep的java的 它显示的进程ID和我杀了他们。再次启动群集,这一切都很正常。 –

+0

,你可以用它代替“PS英法| grep的Java”的“太平绅士”,也找到了守护进程的PID – lizzie