大数据平台技术:Hadoop 伪分布式环境搭建全记录

从零开始,把踩过的坑都写下来

作者 sunhao666 · 2026年9月23日 · 约 5 分钟

环境说明#

这篇记录的是在单台机器上搭建 Hadoop 伪分布式环境的过程。 伪分布式就是把 NameNode、DataNode、ResourceManager 等角色都跑在一台机器上, 适合教学演示和个人练习,不适合生产。

项目 版本
操作系统 Ubuntu 22.04
JDK OpenJDK 8
Hadoop 3.3.6

第一步:配置 SSH 免密登录#

Hadoop 启动脚本需要在本机之间免密执行命令,所以先让机器相信自己。

# 生成密钥对,一路回车即可
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

# 把公钥追加到授权文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

# 验证:应该能直接登录,不提示密码
ssh localhost

常见坑:如果 ssh localhost 还要密码,检查 ~/.ssh 目录权限必须是 700。

第二步:修改四个配置文件#

配置文件都在 $HADOOP_HOME/etc/hadoop/ 下。

core-site.xml#

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

hdfs-site.xml#

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

这里是伪分布式最容易踩的坑:副本数必须改成 1。 默认是 3,但只有一台机器,HDFS 会一直报「副本不足」的警告。

mapred-site.xml#

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

yarn-site.xml#

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

第三步:格式化并启动#

# 格式化 NameNode —— 只在第一次启动前执行!
hdfs namenode -format

# 启动 HDFS
start-dfs.sh

# 启动 YARN
start-yarn.sh

# 用 jps 检查进程,应该看到 5 个 Java 进程
jps

正确的 jps 输出应该包含:

NameNode
DataNode
SecondaryNameNode
ResourceManager
NodeManager

常见报错对照表#

报错信息 原因 解决方法
Connection refused 服务没起来 看 logs/ 下的日志定位
datanode denied 重复格式化导致 clusterID 不一致 删掉 data 和 logs 目录重新格式化
Permission denied 当前用户没有目录权限 chown -R 用户名 $HADOOP_HOME

验证一下#

浏览器打开 http://localhost:9870 能看到 HDFS 界面, 打开 http://localhost:8088 能看到 YARN 界面,就说明成功了。

上传一个文件试试:

hdfs dfs -mkdir -p /test
hdfs dfs -put README.txt /test/
hdfs dfs -ls /test

课堂思考题#

  1. 伪分布式和完全分布式的差别到底在哪几个配置项上?
  2. 如果突然断电,重启后 NameNode 的数据从哪里恢复?