jps命令不能查看hadoop进程

本文介绍了使用jps命令时遇到Hadoop相关进程消失的问题,原因在于Linux系统的tmpwatch定时清理/tmp目录的一个特殊文件,该文件用于保存用户启动进程的pid信息。通过修改tmpwatch文件,添加不删除特定目录的指令,最终解决了问题,使得能够正常启动和管理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系统没出现过这个问题,不知是否跟系统有关.

 

启动HDFS和Hadoop并使用jps命令查看相关进程是否正常启动,可按以下步骤操作。 要启动HDFS,hdfs启动命令位于hadoop/sbin里面,需回到解压目录执行启动脚本。示例如下: ```bash [root@dsj011 hadoop-3.1.3]# start-dfs.sh ``` 此命令会启动NameNode、DataNode和SecondaryNameNode等进程过在启动前需确保之前的进程已停止,否则会有相应提示,如“datanode is running as process 1506. Stop it first.” [^2]。 启动Hadoop相关服务,可编写脚本一键启动hdfs、yarn和历史服务。将以下内容写入`start-dfs.sh`、`stop-dfs.sh`、`start-yarn.sh`、`stop-yarn.sh`等文件中,并传给其他节点: ```bash HDFS_NAMENODE_USER=root HDFS_DATANODE_USER=root HDFS_SECONDARYNAMENODE_USER=root YARN_RESOURCEMANAGER_USER=root YARN_NODEMANAGER_USER=root scp stop-yarn.sh root@bigdata005:/opt/softs/hadoop3.1.3/sbin/ ``` 启动完成后,使用jps命令查看正在运行的Java程序,以确认相关进程是否正常启动。root用户使用时显示所有运行的Java程序,普通用户只显示自己启动的正在运行的Java程序。示例如下: ```bash jps ``` 若当前Linux系统启动了HDFS,正常情况下会显示类似以下信息: ```plaintext 26001 NameNode 26097 DataNode 26263 SecondaryNameNode 26398 Jps ``` 如果在使用jps命令查看时发现缺少某些进程,如NameNode、SecondaryNameNode、DataNode、NodeManager等,可使用以下命令确保NameNode服务正在运行: ```bash hadoop-daemon.sh start namenode ``` 之后再次使用jps命令查看进程状态 [^1][^2][^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值