Windows 11 WSL Ubuntu 环境:安装 Hadoop 完整指南

本文详细介绍了在WSL Ubuntu环境下安装Hadoop的完整流程。


主要内容包括:

  1. 环境准备(安装WSL、Ubuntu及必要工具);

  2. 配置SSH免密登录;

  3. 下载安装Hadoop 3.3.6并配置环境变量;

  4. 详细说明Hadoop核心配置文件的修改方法;

  5. 提供启动/停止脚本及常见问题解决方案。


指南采用国内镜像加速下载,包含一键安装脚本,适合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+OEnterCtrl+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!

相关推荐
Irene19919 小时前
(课堂笔记)Hive 基础
hive·hadoop
勤自省10 小时前
ROS2 + OpenCV 实战教程:人脸识别、物体跟踪、ArUco 二维码识别初级
人工智能·opencv·ubuntu·计算机视觉·ros2
nassi_20 小时前
对AI工程问题的一些思考
大数据·人工智能·hadoop
野熊佩骑1 天前
一文读懂Nginx 之 Ubuntu使用apt方式安装Nginx官方最新版本
linux·运维·服务器·nginx·ubuntu·http
嵌入式学习和实践1 天前
在 Ubuntu 24 上搞交叉编译,提示工具链 No such file or directory
ubuntu·eclipse·no such file
Uncertainty!!1 天前
Ubuntu下Zotero与Prism高效文献管理指南
ubuntu·zotero·overleaf·prism
蛐蛐蛐1 天前
使用Frp实现内网穿透以访问内网Win11远程桌面
网络·ubuntu
Hunter_pcx1 天前
ubuntu:内存假泄漏
linux·运维·服务器·开发语言·c++·人工智能·ubuntu
刘一说1 天前
Ubuntu 系统上安装 Docker
linux·ubuntu·docker