运行jps命令报错process information unavailable

问题描述:

有一台storm的supervisor机器,本来jps命令用得一直都正常,过了几分钟再运行jps查看服务进程,发现报下面的错误:

[root@host12 ~]# jps
20368 -- process information unavailable
20517 -- process information unavailable

原因分析:

根据文章:https://www.cnblogs.com/freeweb/p/5748424.html 的描述,一般原因和解决方法如下:

在Linux下执行 jps 是快速查看Java程序进程的命令,一般情况下hadoop,hbase,storm等进程都是通过jps查看,有些时候因为进程没有被正常结束,比如资源占用过大时挂掉或者没有结束进程就直接重启计算机,会导致原有进程变为-- process information unavailable这样的空值。有时候不用管它,一段时间后会自动消失,如果一直不消失的情况下,可以使用如下方法清理:
进入/tmp目录可以看到有很多以hsperfdata_{用户名}这样的目录,比如:hsperfdata_hbase,hsperfdata_kafka,hsperfdataroot这样的目录,是因为进程虽然在内存中关闭了,但是Linux还会在/tmp下寻找这些临时文件,而此时临时文件并没有没正常删除。这时候直接执行 rm -rf hsperfdata* 删除这些目录,然后再次执行 jps 查看,以上那些进程就不存在了。

总的来说直接执行 rm -rf /tmp/hsperfdata_* 可以快速清除那些残留进程。如果有很多正常运行的进程时,其中夹杂部分残留进程,这个时候不建议全部删除上面的目录,这时候要根据目录和进程的对应关系分析出残留的单个目录来删除无用的进程即可

结合上文的描述,自己的这台问题服务器上的supervisor正好在报错,supervisor通过storm.yaml里面配置的nimbus的hostname连不上nimbus,然后supervisor进程就挂掉了。应该是这个问题引起的jps异常。

解决过程:

按照上文的指导,在/tmp下面找到了一个hsperfdata_root目录。但是这台机器上也运行这kafka程序,但是没有类似hsperfdata_kafka这样的目录:

[root@host12 ~]# cd /tmp/
[root@host12 tmp]# ll
total 10112
drwxrwxrwx 2 root    root      4096 Aug 14 14:41 hsperfdata_root    #/tmp目录下面就找到这个目录

[root@host12 tmp]# cd hsperfdata_root/
[root@host12 hsperfdata_root]# ll
total 64
-rwxrwxrwx 1 root root 32768 Aug 14 15:11 20368     #这两个进程号就是报错里面显示的两个进程号
-rwxrwxrwx 1 root root 32768 Aug 14 15:12 20517

等了一会儿,jps运行也没有自行恢复,只能手动删除文件试试了:

[root@host12 hsperfdata_root]# cd ..
[root@host12 tmp]# rm -rf  hsperfdata_root    

然后jps命令可以运行了,但是kafka的进程在这里也看不到了。查看了kafka,发现kafka本身进程还没有挂掉,端口什么的都是正常的,就是在jps里面看不到了:

[root@host12 tmp]# jps
3852 Jps     
[root@host12 tmp]#

然后把supervisor和kafka都重启了一遍,显示就正常了

[root@host12 ~]# jps
23269 Jps
4391 Supervisor
25241 ConnectDistributed
23610 QuorumPeerMain
24492 Kafka
[root@host12 ~]#

不过运行正常之后,看了一下/tmp目录,也只存在hsperfdata_root目录,上面jps的进程号都在里面:

[root@host12 tmp]# ll
total 10124
drwxr-x--- 2 root    root      4096 Aug 15 10:19 hsperfdata_root
[root@host12 tmp]#  cd hsperfdata_root
[root@host12 hsperfdata_root]# ll
total 128
-rw------- 1 root root 32768 Aug 15 10:49 23610
-rw------- 1 root root 32768 Aug 15 10:49 24492
-rw------- 1 root root 32768 Aug 15 10:49 25241
-rw------- 1 root root 32768 Aug 15 10:49 4391
[root@host12 hsperfdata_root]#

解决问题参考文档:https://www.cnblogs.com/freeweb/p/5748424.html

转载于:https://blog.51cto.com/10950710/2160128

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hadoop的jps命令只显示jps,可能有以下几种情况: 1. Hadoop的JPS命令只显示jps是因为在Hadoop的bin目录中只有jps命令的符号链接,而没有其他Hadoop相关的命令符号链接,这是正常情况。 2. 如果您已经正确安装了Hadoop并且已经设置好了Hadoop的环境变量,但是jps命令仍然只显示jps,那么可能是因为您的Hadoop进程没有启动。在这种情况下,您需要启动Hadoop的进程后,再次运行jps命令,就应该能看到Hadoop相关的进程了。 3. 如果您的Hadoop进程已经启动,但是jps命令仍然只显示jps,那么可能是因为您没有使用正确的用户运行jps命令。在这种情况下,您需要使用具有Hadoop权限的用户登录到系统上,并以该用户身份运行jps命令,才能看到Hadoop相关的进程。 总之,如果您想查看Hadoop相关的进程,请确保Hadoop已正确安装并且相关进程已启动,并以具有Hadoop权限的用户身份运行jps命令。 ### 回答2: Hadoop的JPS命令中只有JPS,这是因为JPS命令Java Virtual Machine Process Status Tool的缩写,它可以用来显示系统上当前正在运行Java进程的信息。因此,JPS只能展示运行Java虚拟机上的进程信息,而无法展示其他类型的进程信息。 同时,Hadoop是一种分布式计算框架,它需要启动多个进程来完成任务。这些进程包括NameNode、DataNode、SecondaryNameNode、JobTracker、TaskTracker等。这些进程都是通过Java命令启动的,因此可以使用JPS命令查看它们的进程信息。 但是,Hadoop的各个组件之间的进程通信和数据传输也需要使用其他的工具和组件,比如Zookeeper、HDFS、Yarn、MapReduce等,这些组件的各种进程信息需要通过其他命令或工具来查看。例如,可以使用Zookeeper自带的客户端命令来查看Zookeeper各个节点的状态,使用HDFS自带的命令行工具来查看HDFS中的文件状态等等。 因此,虽然Hadoop的JPS命令中只有JPS,但是它并不是查看Hadoop集群中所有进程的唯一途径,还有其他的命令和工具可以帮助我们查看集群中各个组件的进程信息。 ### 回答3: Hadoop是一个分布式的计算平台,用于处理大规模的数据。其中,jpsJava Virtual Machine Process Status Tool(Java虚拟机进程状态工具)的缩写,用于检查正在运行Java进程。在Hadoop中,我们通常会使用Hadoop集群来执行数据处理任务,这需要在每个节点上运行一些Hadoop服务进程。 在Hadoop中,我们可以使用hadoop-daemon.sh和yarn-daemon.sh脚本来启动相应的服务进程,例如NameNode、DataNode和ResourceManager等。这些脚本会启动一个Java进程来运行相应的服务进程。当我们在某个节点上执行jps命令时,它会列出所有正在运行Java进程及其相关信息,包括Java进程的ID和进程名。但是在Hadoop中,只有一个Java进程在运行Hadoop服务进程,因此jps命令只会显示一个Java进程,即运行Hadoop服务的Java进程。 总之,使用Hadoop时,由于只有一个Java进程运行所有服务进程,因此只有一个Java进程会出现在JPS命令的输出中。这并不表示Hadoop不能处理大规模的数据或不能运行多个服务进程。相反,Hadoop可以根据需要启动多个服务进程来同时处理多个数据处理任务,同时确保它们在不同节点上运行以实现高可用性和容错性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值