You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04下无法启动Hadoop 3.1.0伪分布式模式求助

排查Hadoop 3.1.0伪分布式NameNode/DataNode启动失败的步骤

我来帮你一步步定位问题,伪分布式启动失败大多是配置或环境细节没做好,先从这些高频点入手:

1. 核对核心配置文件的关键项

伪分布式模式下,core-site.xml和hdfs-site.xml是重中之重,先检查这两个文件的配置是否正确:

  • core-site.xml 必须包含的配置:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9870</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop/tmp</value> <!-- 换成你自己的路径,确保这个目录存在 -->
    </property>
</configuration>
  • hdfs-site.xml 必须包含的配置:
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value> <!-- 伪分布式只能设为1 -->
    </property>
</configuration>

特别注意hadoop.tmp.dir指定的目录,一定要提前用mkdir -p /opt/hadoop/tmp创建,并且给当前Hadoop用户赋予权限:sudo chown -R your-hadoop-user:your-hadoop-group /opt/hadoop/tmp

2. 确认NameNode是否正确格式化

伪分布式第一次启动必须先格式化NameNode,命令是:

hdfs namenode -format

⚠️ 注意:不要重复格式化!如果之前格式化过但现在启动失败,先停掉所有Hadoop进程(stop-all.sh或者yarn-daemon.sh stop resourcemanager+hdfs-daemon.sh stop namenode/datanode),然后删除hadoop.tmp.dir下的所有内容,再重新格式化。

3. 查看完整的错误日志(最关键!)

你只贴了日志末尾的INFO信息,这对排查问题没用——INFO只是普通运行日志,真正的错误信息一般在ERROR或WARN级别里。去Hadoop安装目录的logs文件夹下,找到这两个文件:

  • namenode-你的主机名.log
  • datanode-你的主机名.log

用 grep 快速定位错误:

cat $HADOOP_HOME/logs/namenode-*.log | grep ERROR
cat $HADOOP_HOME/logs/datanode-*.log | grep ERROR

常见的错误比如端口被占用、权限不足、配置文件语法错误(比如XML标签没闭合),都会在这里显示。

4. 检查端口占用情况

Hadoop 3.x的NameNode默认用9870端口(旧版是50070),DataNode用9864端口,还有8020端口用于内部通信。检查这些端口是否被其他进程占用:

# 检查9870端口
netstat -tulpn | grep 9870
# 或者用lsof(需要安装)
lsof -i :9870

如果发现端口被占用,杀掉对应的进程(kill -9 进程ID),或者修改配置文件里的端口号。

5. 验证环境变量配置

确保HADOOP_HOME和JAVA_HOME已经正确设置,并且生效:

echo $HADOOP_HOME
echo $JAVA_HOME

Hadoop 3.1.0只支持Java 8,别用更高版本的Java,否则会有兼容性问题。如果环境变量没设置,要在~/.bashrc或者/etc/profile里添加:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/opt/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

然后执行source ~/.bashrc让配置生效。

6. 检查用户权限问题

绝对不要用root用户启动Hadoop!一定要用专门的非root用户(比如创建一个hadoop用户)来操作。用whoami确认当前用户,然后检查Hadoop安装目录和临时目录的权限是否属于该用户:

ls -ld $HADOOP_HOME
ls -ld /opt/hadoop/tmp

如果权限不对,用chown -R修改:

sudo chown -R hadoop:hadoop $HADOOP_HOME

如果做完这些还是启动失败,把日志里的ERROR信息贴出来,就能更精准地定位问题了。

内容的提问来源于stack exchange,提问作者robbie70

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:59:57