jps命令不能查看hadoop进程

       今天使用jps命令,发现没有了hadoop的相关进程,如datanode,namenode,jobtracker,tasktracker等,都看不到了,但使用pe -ef|grep hadoop是看到相关进程的,而且hadoop是正常运行当中,能跑mr程序.这个问题导致的后果就是不能对hadoop进程停启了,因为机器认不到namenode/datanode进程,影响还是挺大的.

       网上也没找到解决方案,最后发现是因为linux下的tmpwatch把/tmp目录的一个特殊文件删除了(定时清理),这个文件保存的是用户启动进程的pid信息.解决方法是修改相关文件,防止/tmp目录的一些文件被删除:

1切换root

2.编辑tmpwatch文件

vi /etc/cron.daily/tmpwatch 

 3.插入 -X '/tmp/hsperfdata_*' 10d /tmp , -X 是表示不删除某目录

flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix 240 /tmp \
        -X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 720 /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
        /usr/sbin/tmpwatch "$flags" -f 720 "$d"
    fi
done

  

 4.重启一下机器,问题解决.

启动hadoop. jps能看到相关的hadoop进程了.

摘自网上:

写道

java程序启动后,默认(请注意是默认)会在/tmp/hsperfdata_userName目录下以该进程的id为文件名新建文件,并在该文件中存储jvm运行的相关信息,其中的userName为当前的用户名,/tmp/hsperfdata_userName目录会存放该用户所有已经启动的java进程信息。对于windows机器/tmp用Windows存放临时文件目录代替。

ps:我使用的是redhat5系统,之前使用centos系统没出现过这个问题,不知是否跟系统有关.

猜你喜欢

转载自justinyao.iteye.com/blog/1976820