本文详细介绍了在WSL Ubuntu环境下安装Hadoop的完整流程。
主要内容包括:
环境准备(安装WSL、Ubuntu及必要工具);
配置SSH免密登录;
下载安装Hadoop 3.3.6并配置环境变量;
详细说明Hadoop核心配置文件的修改方法;
提供启动/停止脚本及常见问题解决方案。
指南采用国内镜像加速下载,包含一键安装脚本,适合Windows 11用户快速搭建Hadoop开发环境,最低要求4GB内存和2GB硬盘空间。
Hadoop 在 WSL Ubuntu 上的完整安装指南
一、环境准备
1.1 安装 WSL 和 Ubuntu
以管理员身份打开 PowerShell 或 CMD,执行:
powershell
# 安装 WSL
wsl --install
# 重启电脑后,打开 Microsoft Store 安装 Ubuntu 22.04 或 24.04
1.2 更新系统并安装必要软件
打开 WSL 终端(Ubuntu),执行:
bash
# 更新软件包
sudo apt update && sudo apt upgrade -y
# 安装必要工具
sudo apt install -y openjdk-11-jdk openssh-server wget curl nano net-tools
# 验证 Java 安装
java -version
# 应该显示 openjdk version "11.0.xx"
二、配置 SSH 免密登录
bash
# 1. 启动 SSH 服务
sudo service ssh start
# 2. 生成 SSH 密钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 3. 配置免密登录
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
# 4. 添加 localhost 到已知主机
ssh-keyscan localhost >> ~/.ssh/known_hosts 2>/dev/null
# 5. 测试免密登录(应该不需要密码)
ssh localhost exit
三、下载并安装 Hadoop
3.1 下载 Hadoop(使用国内镜像)
bash
# 创建下载目录
cd ~
mkdir -p downloads && cd downloads
# 使用清华镜像下载 Hadoop 3.3.6
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 验证下载(文件大小约 696MB)
ls -lh hadoop-3.3.6.tar.gz
3.2 解压安装
bash
# 解压到 /usr/local
sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
# 重命名目录
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
# 修改权限(将 mumu 替换为你的用户名)
sudo chown -R $(whoami):$(whoami) /usr/local/hadoop
四、配置环境变量
bash
# 编辑 .bashrc
nano ~/.bashrc
在文件末尾添加:
bash
# Java 环境
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# Hadoop 环境
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出(Ctrl+O,Enter,Ctrl+X)
bash
# 使配置生效
source ~/.bashrc
# 验证
hadoop version
五、配置 Hadoop 核心文件
进入配置目录:
bash
cd $HADOOP_HOME/etc/hadoop
5.1 配置 hadoop-env.sh
bash
# 添加 JAVA_HOME 配置
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> hadoop-env.sh
5.2 配置 core-site.xml
bash
cat > core-site.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/$(whoami)/hadoop_tmp</value>
</property>
</configuration>
EOF
5.3 配置 hdfs-site.xml
bash
cat > hdfs-site.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/$(whoami)/hadoop_tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/$(whoami)/hadoop_tmp/dfs/data</value>
</property>
</configuration>
EOF
5.4 配置 yarn-site.xml
bash
cat > yarn-site.xml << 'EOF'
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
EOF
5.5 配置 mapred-site.xml
bash
cat > mapred-site.xml << 'EOF'
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
EOF
5.6 配置 yarn-env.sh
bash
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> yarn-env.sh
六、创建数据目录并格式化
bash
# 创建数据目录
mkdir -p ~/hadoop_tmp/dfs/name
mkdir -p ~/hadoop_tmp/dfs/data
# 格式化 NameNode(输入 Y 确认)
hdfs namenode -format
七、启动 Hadoop
bash
# 启动所有服务
start-all.sh
# 等待 30 秒
sleep 30
# 验证进程(应该看到 5 个核心进程)
jps
预期输出:
text
NameNode
DataNode
SecondaryNameNode
ResourceManager
NodeManager
Jps
八、创建启动/停止脚本(可选但推荐)
8.1 创建启动脚本
bash
mkdir -p ~/bin
cat > ~/bin/start-hadoop.sh << 'EOF'
#!/bin/bash
echo "========================================="
echo "Starting Hadoop Cluster"
echo "========================================="
# 启动 SSH 服务
echo "1. Starting SSH service..."
sudo service ssh start
# 启动 Hadoop
echo "2. Starting Hadoop..."
start-all.sh
# 等待服务启动
echo "3. Waiting 30 seconds for services..."
sleep 30
# 显示进程
echo "4. Checking Hadoop processes..."
jps
echo ""
echo "========================================="
echo "✅ Hadoop is ready!"
echo " - HDFS UI: http://localhost:9870"
echo " - YARN UI: http://localhost:8088"
echo "========================================="
EOF
8.2 创建停止脚本
bash
cat > ~/bin/stop-hadoop.sh << 'EOF'
#!/bin/bash
echo "========================================="
echo "Stopping Hadoop Cluster"
echo "========================================="
stop-all.sh
echo ""
echo "✅ Hadoop stopped"
EOF
8.3 设置权限和 PATH
bash
chmod +x ~/bin/start-hadoop.sh ~/bin/stop-hadoop.sh
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
九、验证安装
9.1 测试 HDFS 命令
bash
# 创建目录
hdfs dfs -mkdir -p /user/$(whoami)/test
# 上传文件
echo "Hello Hadoop" > test.txt
hdfs dfs -put test.txt /user/$(whoami)/test/
# 查看文件
hdfs dfs -ls /user/$(whoami)/test/
hdfs dfs -cat /user/$(whoami)/test/test.txt
9.2 访问 Web 界面
在 Windows 浏览器中打开:
-
HDFS :
http://localhost:9870/explorer.html -
YARN :
http://localhost:8088
十、日常使用
启动 Hadoop
bash
# 方法一:使用脚本
start-hadoop.sh
# 方法二:手动启动
sudo service ssh start
start-all.sh
停止 Hadoop
bash
stop-hadoop.sh
常用命令速查
| 操作 | 命令 |
|---|---|
| 查看进程 | jps |
| 列出 HDFS 文件 | hdfs dfs -ls / |
| 创建目录 | hdfs dfs -mkdir -p /path |
| 上传文件 | hdfs dfs -put local.txt /hdfs/path/ |
| 下载文件 | hdfs dfs -get /hdfs/path/file.txt ./ |
| 查看文件内容 | hdfs dfs -cat /hdfs/path/file.txt |
| 删除文件 | hdfs dfs -rm /hdfs/path/file.txt |
十一、常见问题解决
问题 1:Java 版本错误
bash
# 检查 Java 版本必须是 11
java -version
# 如果不是 11,切换版本
sudo update-alternatives --config java
# 选择 Java 11
问题 2:SSH 连接失败
bash
sudo service ssh start
ssh localhost exit
问题 3:NameNode 无法启动
bash
# 停止所有服务
stop-all.sh
# 删除临时文件
rm -rf ~/hadoop_tmp/dfs/name/* ~/hadoop_tmp/dfs/data/*
# 重新格式化
hdfs namenode -format
# 重新启动
start-all.sh
问题 4:端口被占用
bash
# 检查端口
netstat -tlnp | grep 9870
netstat -tlnp | grep 8088
# 更换端口或关闭占用进程
十二、系统要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 11(启用 WSL2) | Windows 11 Pro |
| 内存 | 4GB | 8GB+ |
| 硬盘空间 | 2GB(Hadoop)+ 1GB(数据) | 10GB+ |
| WSL 版本 | WSL2 | WSL2 |
| Ubuntu 版本 | 20.04+ | 22.04 或 24.04 |
| Java 版本 | Java 11 | Java 11 |
快速复现命令汇总
复制以下代码块,在 WSL 终端中一次性执行(注意替换用户名):
bash
# ============ 一键安装脚本 ============
# 注意:执行前请确保已安装 WSL 和 Ubuntu
# 1. 安装基础软件
sudo apt update && sudo apt install -y openjdk-11-jdk openssh-server wget curl nano
# 2. 配置 SSH
sudo service ssh start
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 3. 下载并安装 Hadoop
cd ~
wget -P ~/downloads/ https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzvf ~/downloads/hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
sudo chown -R $(whoami):$(whoami) /usr/local/hadoop
# 4. 配置环境变量(追加到 .bashrc)
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export HADOOP_HOME=/usr/local/hadoop' >> ~/.bashrc
echo 'export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc
# 5. 配置 Hadoop 文件(在配置目录中执行)
cd $HADOOP_HOME/etc/hadoop
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> hadoop-env.sh
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> yarn-env.sh
# 写入配置文件(继续在配置目录执行,注意替换用户名)
cat > core-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/$(whoami)/hadoop_tmp</value>
</property>
</configuration>
EOF
cat > hdfs-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/$(whoami)/hadoop_tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/$(whoami)/hadoop_tmp/dfs/data</value>
</property>
</configuration>
EOF
cat > yarn-site.xml << EOF
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
EOF
cat > mapred-site.xml << EOF
<?xml version="1.0"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
EOF
# 6. 创建数据目录并格式化
mkdir -p ~/hadoop_tmp/dfs/name ~/hadoop_tmp/dfs/data
hdfs namenode -format
# 7. 启动 Hadoop
start-all.sh
sleep 30
jps
恭喜!按照以上步骤,你可以在任何 Windows 11 电脑上成功安装 Hadoop!