问题描述
调用stop-dfs.sh脚本,提示无法找到namenode和datanode服务,但在各个服务节点上namenode和datanode正常运行,并且webdfs服务可以正常运行。
原因分析
hadoop脚本将各个服务运行的进程号(pid)默认存储到临时目录/tmp下,而centos系统会对/tmp临时目录下长时间不用的文件的进行清理。由于集群管理员长时间没有管理集群服务(重启等),导致/tmp中进行号文件pid被操作系统清理,所以hadoop脚本找不到正在运行的服务,最终导致无法正常停止服务进程。
解决办法
- 手动停止各个节点上的服务。
- 配置hadoop-daemon.sh 修改pid文件位置。
- 配置yarn-daemon.sh 修改pid存储位置。
- 生成的pid规则为:hadoop-[启动账号]-服务名称.pid