为啥 JPS 显示没有进程正在运行?

Posted

技术标签:

【中文标题】为啥 JPS 显示没有进程正在运行?【英文标题】:Why is JPS showing no process running?为什么 JPS 显示没有进程正在运行? 【发布时间】:2017-06-21 12:33:13 【问题描述】:

我正在使用 apache-hadoop 二进制文件运行 hadoop,并且我已经使用以下命令启动了 dfs、yarn 和 mr deamon:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

在此之后一切正常,即,我可以看到 HDFS UI、资源管理器 UI、作业历史 UI 等。

这里是jps命令输出:

sh-3.2# jps
61601 Jps
sh-3.2#

但是,当我使用 jps 命令检查哪些进程正在运行时,它显示没有进程在运行,没有名称节点,没有数据节点,没有资源管理器,没有辅助名称节点。尽管如此,我可以轻松地将文件从本地复制到 HDFS,在 HDFS 上创建目录等。

我的问题是为什么 jps 命令没有显示实际运行的进程?我们是否需要使用其他参数调用 jps 来检查进程?

【问题讨论】:

【参考方案1】:

引用jps 文档:

jps 命令生成的 JVM 列表可以通过授予运行该命令的主体的权限来限制。该命令仅列出原则具有访问权限的 JVM,该权限由操作系统特定的访问控制机制确定。

实际上,这通常意味着jps 只打印运行jps 的同一用户所拥有的JVM 进程的信息。在典型的 Hadoop 集群中,守护进程在不同的用户下运行,例如用户 hdfs 用于 NameNode,用户 yarn 用于 ResourceManager。如果您拥有sudo 访问权限并以这些用户之一的身份运行jps,那么您可以看到这些进程。

【讨论】:

我的 hadoop 集群使用 KV 用户运行。但是,我仍然尝试 sudo su 并运行 jps,但没有运气。 我有一个案例,Java 进程在我登录的同一用户下运行,但 jps 不显示它们。我也试过jps作为root,也是一样的。我很困惑。 问题与 /tmp/hsperfdata* -> ***.com/questions/3805376/…

以上是关于为啥 JPS 显示没有进程正在运行?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 python 脚本没有显示为进程,即使它正在运行?

JDK工具系列之jps

java分析工具系列2:jps(显示指定系统内所有的虚拟机进程)

jps虚拟机进程状态工具

为啥 GetProcesses() 不显示所有正在运行的进程

想问下我的hadoop安装完毕jps进程也都能看见,到了管理界面node2,live node为1这是为啥? 怎么解决?