嗨我在独立模式下有一个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 *”会起作用)
非常感谢。
答案 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。乏味,但它有效。