1.问题以及原因
采坑重要,Linux在/tmp目录会定期删除一些文件和文件夹, 如30天周期,当然hadoop进程pid文件存放/tmp目录下时,是有被删除风险,生产中出现过这种情况,重启hadoop,jps进程未减少,但是新的和旧的进程混在了一起,造成了紊乱。
2.模拟pid文件被删除情况
ll /tmp/ #默认在/tmp下,可知存在hdfs进程的三个pid存放文件,cat可得带进程pid
rm -rf hadoop-hadoop-datanode.pid #删除hdfs datanode进程的存放文件此时一切是正常的
jps
hdfs dfs -ls/ #正常使用
~/app/hadoop-2.6.0-cdh5.7.0/sbin/stop-dfs.sh #此时去关闭hdfs会显示无datanode进程
~/app/hadoop-2.6.0-cdh5.7.0/sbin/start-dfs.sh #我们再启动hdfs,启动时控制台是没有问题的
但是但是,此时新的和旧的进程混在了一起,造成了紊乱,查看datanode日志启是报错的。这是jps没问题三个进程都在,但是实际hdfs是不可用的。问题较严重,隐藏较深。
3、解决方法:修改hadoop pid文件存储位置
mkdir /data/tmp #创建pid文件存储目录
chmod -R 777 /data/tmp
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop-env.sh #编辑,修改原有的为export HADOOP_PID_DIR=/data/tmp
重启hadoop