jps命令的坑

博客介绍了jps所在位置及进程号标识文件存储位置,指出jps命令查看结果不能代表进程真实状态,建议用ps -ef | grep xxx查看。同时提到ps -ef方式也有局限,如程序内存泄露时进程存在但端口下线,生产上做程序状态检测需通过端口号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.jps所在的位置

[hadoop@hadoop ~]$ which jps
/usr/java/jdk1.8.0_144/bin/jps

在这里插入图片描述

2.对应的进程号标识文件存储在哪里?

如下图,会存储在/tmp/hsperfdata_用户名(在这里用户是hadoop)
在这里插入图片描述

对/tmp/hsperfdata_hadoop/目录下的namenode进程10003进行mv操作,接下来ll发现正常,但是当jps在此查看的时候发现namenode的进行100003已经自动被清理如下图:
在这里插入图片描述
但是ps -ef查看namenode的进程还是存在的,如下图:
在这里插入图片描述
访问hdfs的50070端口也还是正常的
在这里插入图片描述

另外一个如果jps看到如下的效果(在此的效果不是很明显,在CDH上会很直观)
在这里插入图片描述

总结:当看见 process information unavailable不能代表进程是存在 或者不存在,要当心,jps命令拿的内容就是前边提到的/tmp/hsperfdata_hadoop目录下的文件名。像前边mv修改完文件名之后系统自动步骤清理此目录,尽管jps之后看不到任何内容,也不能说明进程的状态是正常还是已经挂掉。所以尤其使用jps命令来做脚本状态检测的一般使用经典的 ps -ef | grep xxx命令去查看进程是否存在,这才是真正的状态检测。
但是用ps -ef这种方式又可能会存在另外一种情况:比如spark thriftserver +hive 会启动一个driver 进程 110,默认端口号 10001。由于该程序的内存泄露或者某种bug,导致进程ps是存在的,10001端口号下线了,就不能够对外提供服务。所以在生产上做任何程序的状态检测,必须通过端口号来。

<think>好的,用户需要写一个关于JDK安装、SSH免密登录以及HDFS集群配置和基本操作的实验总结。首先,我得回忆一下这些步骤的关键点。 首先是JDK安装。根据引用[1],用户需要将JDK压缩包通过SFTP上传到Linux,解压到指定目录,然后配置环境变量JAVA_HOME和PATH。这部分要强调环境变量的配置是否正确,否则后续Hadoop可能会出问题。 接下来是SSH免密登录,引用[2]提到需要在node1配置到所有节点的免密登录。步骤应该是生成密钥对,将公钥复制到各个节点,包括自己。可能还需要测试ssh连接是否成功,避免后续启动集群时出现权限问题。 然后是HDFS集群配置。这里需要修改workers文件,列出所有DataNode节点。高版本可能用workers而不是slaves,这点要注意。启动和停止脚本是start-dfs.sh和stop-dfs.sh,引用[3]提醒如果不是第一次启动,可以直接用脚本,不需要重新初始化。 用户可能还希望知道实验中的常见问题,比如环境变量配置错误导致命令找不到,或者免密登录失败导致脚本执行中断。另外,HDFS的配置文件如core-site.xml和hdfs-site.xml的设置也很重要,可能需要指定NameNode和DataNode的目录。 在概括时,需要按步骤分点,确保逻辑清晰。可能还要提到验证步骤,比如用jps命令检查Java进程,或者hdfs dfsadmin -report查看集群状态。最后,基本操作可能包括文件上传下载,使用hdfs dfs -ls等命令。 需要确保引用正确,比如引用1、2、3分别对应JDK安装、免密配置和集群启动。可能用户还希望知道如何高效总结实验过程,突出每个环节的关键点,以及可能遇到的和解决办法。要避免太技术化的细节,但又要覆盖必要步骤,确保其他人能复现实验。</think>### JDK安装、SSH免密登录及HDFS集群配置实验总结 #### 一、JDK安装要点 1. **文件传输与解压** 使用SFTP工具(如`alt+p`快捷键)将JDK压缩包上传至Linux服务器,解压至指定目录(如`/root/apps`)[^1]。 2. **环境变量配置** 在`~/.bashrc`或`/etc/profile`中添加: ```bash export JAVA_HOME=/root/apps/jdk1.8.0_291 export PATH=$JAVA_HOME/bin:$PATH ``` 执行`source`命令使配置生效,并通过`java -version`验证安装。 #### 二、SSH免密登录配置 1. **密钥生成与分发** - 在控制节点(如`node1`)执行`ssh-keygen -t rsa`生成密钥对。 - 使用`ssh-copy-id nodeX`将公钥分发到所有集群节点(包括自身)[^2]。 2. **验证连通性** 执行`ssh nodeX`测试免密登录,避免后续脚本执行因认证失败中断。 #### 三、HDFS集群配置与启动 1. **节点配置** - 修改Hadoop安装目录下的`etc/hadoop/workers`文件,列出所有DataNode节点[^2]。 - 配置核心文件(如`core-site.xml`定义`fs.defaultFS`,`hdfs-site.xml`设置副本数)。 2. **集群启停** - 首次启动需格式化NameNode:`hdfs namenode -format`。 - 使用`start-dfs.sh`启动集群,`stop-dfs.sh`停止服务[^3]。 - 通过`jps`检查进程(含`NameNode`/`DataNode`),`hdfs dfsadmin -report`查看集群状态。 #### 四、基本操作验证 1. **文件系统操作** - 创建目录:`hdfs dfs -mkdir /test` - 上传文件:`hdfs dfs -put local.txt /test` - 查看内容:`hdfs dfs -cat /test/local.txt` 2. **容错测试** 手动终止某个DataNode进程,观察HDFS自动触发副本恢复机制。 #### 实验关键问题总结 - **环境依赖**:JDK版本需与Hadoop兼容,避免`UnsupportedClassVersionError`。 - **权限一致性**:所有节点用户名、目录权限需统一,防止读写冲突。 - **配置文件同步**:确保集群所有节点的Hadoop配置完全一致。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值