“Linux 上 Hadoop 报错退出”这个现象太常见了,原因可能非常多,需要先看具体的报错信息才能精确定位。下面我按常见原因 → 排查方法 → 解决建议给你系统梳理一下,你可以对照自己的情况。
Hadoop 强依赖 Java。
表现:
java: command not foundError: JAVA_HOME is not set排查:
java -version
echo $JAVA_HOME
解决:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
并且写入:
~/.bashrc
/etc/profile
hadoop-env.sh
Hadoop 对配置非常敏感。
常见问题:
core-site.xml 写错hdfs-site.xml 中路径不存在mapred-site.xml 缺失典型报错:
java.lang.IllegalArgumentException
Cannot create directory
检查点:
cat $HADOOP_HOME/etc/hadoop/core-site.xml
cat $HADOOP_HOME/etc/hadoop/hdfs-site.xml
解决:
mkdir -p /data/hadoop/tmp
chown -R hadoop:hadoop /data/hadoop
特别常见!
表现:
Permission deniedCannot write to /tmp原因:
解决:
useradd hadoop
chown -R hadoop:hadoop $HADOOP_HOME
chown -R hadoop:hadoop /data/hadoop
su - hadoop
⚠️ 不要用 root 跑 Hadoop
表现:
start-dfs.sh 没反应解决:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh localhost
表现:
Address already in use检查:
netstat -tunlp | grep 9000
netstat -tunlp | grep 8088
解决:
hdfs-site.xml 端口表现:
查看:
dmesg | grep killed
free -h
解决:
<property>
<name>mapreduce.map.memory.mb</name>
<value>512</value>
</property>
cd $HADOOP_HOME/logs
ls
tail -200 hadoop-*-namenode-*.log
tail -200 hadoop-*-datanode-*.log
hdfs namenode
或
yarn resourcemanager
请把下面信息发我:
我可以直接帮你逐行分析并给修改方案。