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

您好我有独立模式下的Spark群集,也就是说,我有一个Spark-master进程和三个在我的笔记本电脑上运行的Spark-Slave进程(在同一台机器上的Spark群集)。

启动主站和从站只是在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”号码。 但是,如果我使用非数字名称启动一个slave,该怎么办呢?

还有任何想法,通过一次点击closures整个火花集群? (我知道运行“pkill -f spark *”可以工作)

非常感谢。

我只是想出解决方案:

/usr/lib/spark/conf/spark-env.sh中添加一个额外的参数“ SPARK_WORKER_INSTANCES = 3 ”(或者你的slave实例的数量),然后运行“/ usr / lib / spark / sbin / stop -all.sh“并停止所有实例。

但是,“stop-all.sh”只适用于你开始使用数字的奴隶,例如:

 /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 

如果你开始使用任意名字的奴隶,那么“stop-all.sh”不起作用,例如:

 /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 

在终端中使用jps命令

输出会是这样的

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

杀死主人和工人的过程。

喜欢这个

 kill 5134 kill 4905 

主人和奴隶都将被停止。

如果这些重新启动,这意味着你已经关闭你的系统停止主从从…你需要重新启动你的系统。

我有一个类似的问题。 在我只需要ssh到8台机器,并在所有相关的进程中使用kill -9。 我用ps -ef | grep spark找到进程id。 单调乏味,但工作。