原因: Spark的停止,是通过一些.pid文件来操作的。
查看spark-daemon.sh文件,其中一行:$SPARK_PID_DIRThe pid files are strored
. /tmp by default .
$SPARK_PID_DIR 存放的pid文件中,就是要停止的进程的pid,$SPARK_PID_DIR默认是在系统的/tmp目录。
系统每隔一段时间就会清除/tmp目录下的内容。到/tmp下查看,如果没有Spark相关.pid文件,这就是导致Spark集群无法停止的原因。
解决方法
在集群所有节点spark的conf/spark-env.sh文件中增加如下配置:
export SPARK_PID_DIR=/data/spark/pids
随后进行重启便可以解决