1 问题描述
输入命令stop-cluster.sh关闭FLINK集群的时候输出:
显示StandaloneSession不存在
然而jps查看
StandaloneSessionClusterEntrypoint是存在的
而且进入web查看flink也是正常运行的
TaskManagerRunner 无法正常关闭的情况,这篇文章同样适用
2 为什么会无法正常关闭,还提示没有standalonesession进程呢?
原因是FLINK启动是会把启动进程的PID存到一个文件中(默认是保存到系统的/tmp目录下)
由于是临时目录,会被系统清理
被清理后,存放的ID就找不到了,也就没法关闭集群了
举证:
cd /tmp 目录下
目前是没有FLINK进程文件的
然后重新启动一下FLINK ./bin/start-cluster.sh
再查看 /tmp 目录
PID文件如上图
多出了 flink-dwc-standalonesession.pid 进程文件
- 因此事情的真相只有一个:
当启动进程时,pid进程文件会存储到默认的 /tmp 目录下,关闭FLINK集群时会在默认目录下寻找pid文件进行删除,但是默认目录会定时清理,因此无法正常关闭FLINK集群,博主的FLINK集群经常启动就是很久,再关闭集群时可能pid文件已经被清理了
3 如何关闭?
首先输入 ./bin/stop-cluster.sh
输入 jpsall
博主这里只有一个 StandaloneSessionClusterEntrypoint 未成功关闭
只能kill杀死进程了
ps -ef|grep StandaloneSessionClusterEntrypoint
kill 3632
4 修改PID进程文件默认配置
确保FLINK进程已经关闭
进入 Flink/bin 目录下
vim config.sh
大概130行 “DEFAULT_ENV_PID_DIR= ” 该配置为pid文件默认位置
修改新路径(先再FLINK根目录下创建文件夹tmp,记得分发)