Ubuntu 20.04下Hadoop 3.2.4环境jps进程信息不可用求助
解决Ubuntu 20.04下jps进程信息不可用及Python脚本被Killed问题
核心关联分析
你的两个问题大概率存在关联:Python脚本被"Killed"通常是系统**OOM Killer(内存不足杀手)**触发的,而jps无法读取进程信息,可能是Java进程(比如Hadoop守护进程)因内存不足异常退出,或JVM无法写入性能数据文件导致的。
第一步:排查内存/swap不足问题
查看系统内存和swap使用情况:
free -h如果
Mem的used接近total,且Swap的used也接近total,说明系统资源耗尽。验证是否是OOM Killer杀了进程:
dmesg | grep -i "out of memory" # 或直接查看被杀死的进程记录 dmesg | grep -i kill如果输出中出现
java或python进程被标记为killed,即可确认内存不足问题。
解决内存不足:
- 临时缓解:关闭不必要的后台进程,释放内存。
- 永久解决:
- 增加swap空间:
# 创建4G swap文件 sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 设置开机自动挂载 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab - 调整Hadoop内存配置:修改
$HADOOP_HOME/etc/hadoop下的hadoop-env.sh、yarn-env.sh、mapred-env.sh,降低JVM堆内存(比如将HADOOP_HEAPSIZE从默认值调小,避免超过系统可用内存)。
- 增加swap空间:
第二步:修复jps进程信息不可用问题
1. 确认Java进程是否实际运行
先排查Hadoop进程是否真的在运行(避免jps本身没问题,而是进程没起来):
ps aux | grep java | grep -v grep
如果没有输出,说明Hadoop守护进程未启动或已崩溃,查看Hadoop日志定位原因:
# 查看namenode日志示例 tail -n 50 $HADOOP_HOME/logs/hadoop-ubuntu-namenode-*.log
2. 修复hsperfdata权限异常问题
权限自动变为777,通常是进程启动时的umask设置错误导致的:
- 检查当前用户的umask:
正常用户应为umask0022(对应目录权限755)。如果是0000,会导致创建的文件/目录权限为777。 - 检查Hadoop启动脚本的umask设置:
编辑$HADOOP_HOME/sbin/hadoop-daemon.sh和$HADOOP_HOME/sbin/yarn-daemon.sh,找到类似umask的语句,改为:umask 022 - 重新创建hsperfdata目录并重启Hadoop:
rm -rf /tmp/hsperfdata_ubuntu mkdir /tmp/hsperfdata_ubuntu chown ubuntu:ubuntu /tmp/hsperfdata_ubuntu chmod 755 /tmp/hsperfdata_ubuntu # 重启Hadoop stop-all.sh start-all.sh - 检查/tmp目录权限:确保/tmp的粘性位(t)存在,防止其他用户篡改文件:
ls -ld /tmp # 正确权限应为 drwxrwxrwt
3. 排查OpenJDK兼容性
虽然OpenJDK 11.0.17与Hadoop 3.2.4兼容,但尝试升级到最新小版本修复潜在bug:
sudo apt update && sudo apt upgrade openjdk-11-jdk
内容的提问来源于stack exchange,提问作者suran choi
相关产品推荐
相关产品推荐

