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!

相关推荐
通信小小昕16 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
极光代码工作室17 小时前
基于Spark的日志监控与分析平台
大数据·hadoop·python·spark·数据可视化
CedarQR18 小时前
万字长文:从零在 RK3588 上部署 PaddleSpeech 中文 TTS 全流程(FastSpeech2 + HiFiGAN)
开发语言·c++·嵌入式硬件·ubuntu·json
雷工笔记21 小时前
Ubuntu迁移记录
笔记·ubuntu
一叶龙洲1 天前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
一叶龙洲1 天前
wslg打开Ubuntu24.04默认打开图形界面
linux·服务器·数据库·ubuntu
敖行客 Allthinker2 天前
Parallels Ubuntu虚拟机项目如何让手机访问?完整解决方案
linux·运维·ubuntu
keyipatience2 天前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
观山岳五楼2 天前
Ubuntu 24 怎么使用Ubuntu 20 的镜像源
linux·运维·ubuntu
辰痕~2 天前
物理机装Linux操作系统(Ubuntu为例)
linux·ubuntu