Spark sbin /文件夹中的stop-all.sh不会停止所有从属节点

时间:2015-04-17 21:06:55

标签: linux hadoop apache-spark

嗨我在独立模式下有一个Spark集群,即我的笔记本电脑中运行了一个Spark-master进程和三个Spark-slave进程(同一台机器中的Spark集群)。

启动master和slave只是在Spark_Folder / sbin / start-master.sh和Spark_Folder / sbin / stop-master.sh中运行脚本。

然而,当我运行Spark_Folder / sbin / stop-all.sh时,它只停止一个主服务器和一个服务器,因为我有三个从服务器正在运行,在运行stop-all.sh之后我还有两个服务器正在运行。

我深入研究脚本“stop-slaves.sh”,发现如下:

if [ "$SPARK_WORKER_INSTANCES" = "" ]; then
  "$sbin"/spark-daemons.sh stop org.apache.spark.deploy.worker.Worker 1
else
  for ((i=0; i<$SPARK_WORKER_INSTANCES; i++)); do
    "$sbin"/spark-daemons.sh stop org.apache.spark.deploy.worker.Worker $(( $i + 1 ))
  done
fi

似乎此脚本基于“SPARK_WORKER_INSTANCES”号码停止。但是如果我使用非数字名称启动奴隶呢?

有什么想法只需点击一下即可关闭整个火花星团? (我知道运行“pkill -f spark *”会起作用)

非常感谢。

4 个答案:

答案 0 :(得分:6)

我只是想出解决方案:

在&#34; /usr/lib/spark/conf/spark-env.sh &#34;,添加额外的参数&#34; SPARK_WORKER_INSTANCES = 3 &#34; (或者奴隶实例的数量),然后运行&#34; /usr/lib/spark/sbin/stop-all.sh"并且所有实例都停止了。

然而,&#34; stop-all.sh&#34;仅适用于您开始使用数字的奴隶,例如:

/usr/lib/spark/sbin/start-slave.sh 1 spark://master-address:7077
/usr/lib/spark/sbin/start-slave.sh 2 spark://master-address:7077
/usr/lib/spark/sbin/start-slave.sh 3 spark://master-address:7077

如果您使用任意名称启动奴隶,那么&#34; stop-all.sh&#34;不起作用,例如:

/usr/lib/spark/sbin/start-slave.sh myWorer1 spark://master-address:7077
/usr/lib/spark/sbin/start-slave.sh myWorer2 spark://master-address:7077
/usr/lib/spark/sbin/start-slave.sh myWorer3 spark://master-address:7077

答案 1 :(得分:4)

在终端

中使用jps命令

输出就像这样

5417 NameNode
8480 Jps
13311 Elasticsearch
5602 DataNode
5134 Worker
5849 SecondaryNameNode
4905 Master

杀死主人和工人的过程。

像这样

kill 5134
kill 4905

主人和奴隶都将被阻止。

如果再次重新启动这意味着您已经停止主站和从站关闭系统......您需要重新启动系统。

答案 2 :(得分:1)

kill -9 $(jps -l | grep spark | awk -F ' ' '{print $1}')

答案 3 :(得分:0)

我有类似的问题。在我只需要ssh到8台机器,并在所有相关进程上使用kill -9。我用了ps -ef | grep spark找到进程ID。乏味,但它有效。