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

key*_*int 7 linux hadoop apache-spark

嗨我在独立模式下有一个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
Run Code Online (Sandbox Code Playgroud)

似乎此脚本基于"SPARK_WORKER_INSTANCES"号码停止.但是,如果我使用非数字名称启动奴隶怎么办?

还有什么想要通过一次点击关闭整个火花集群?(我知道运行"pkill -f spark*"会起作用)

非常感谢.

key*_*int 6

我只是想出解决方案:

在" /usr/lib/spark/conf/spark-env.sh "中,添加一个额外的参数" SPARK_WORKER_INSTANCES = 3 "(或从属实例的数量),然后运行"/ 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
Run Code Online (Sandbox Code Playgroud)

如果你使用任意名称启动奴隶,那么"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
Run Code Online (Sandbox Code Playgroud)


Har*_*hak 5

在终端中使用jps命令

输出会是这样的

5417 NameNode
8480 Jps
13311 Elasticsearch
5602 DataNode
5134 Worker
5849 SecondaryNameNode
4905 Master
Run Code Online (Sandbox Code Playgroud)

杀死master和worker进程。

像这样

kill 5134
kill 4905
Run Code Online (Sandbox Code Playgroud)

主人和奴隶都将被阻止。

如果这些再次重新启动,这意味着您已经通过停止主设备和从设备关闭了系统...您需要重新启动系统。