Windows 环境下搭建 Hadoop 详细教程(小白从零开始)
很多朋友想学大数据,第一反应就是装 Hadoop。官方更推荐 Linux,但现实中不少人电脑是 Windows,临时练手又不想装虚拟机。其实 Windows 环境下也能把 Hadoop 跑起来,只要步骤对,新手半天就能搞定。下面按小白能看懂的节奏,从零开始一步一步讲清楚。
先搞清楚:Windows 上跑 Hadoop 靠谱吗
Hadoop 底层依赖 Linux 的一些命令和权限机制,Windows 原生支持不完整。目前最稳妥的做法是:用官方二进制包 + 社区提供的 winutils 工具补齐缺失的功能。这种方法不用装 Cygwin,也不用改系统,适合日常学习、写 MapReduce 程序、练 HDFS 操作。
注意几点:
- 只适合单机伪分布式模式,别拿来跑生产集群。
- 建议用 Windows 10 或 11 的 64 位系统。
- 内存至少 8G,推荐 16G,硬盘留 20G 以上空闲。
- 路径里尽量别出现中文和空格,否则容易报错。
准备工作:下载这些东西
-
JDK 8
去 Oracle 官网或 Adoptium 下载 jdk-8u 版本,安装时记住路径,比如C:\Java\jdk1.8.0_xxx。
装完打开命令提示符输入java -version,能看到版本号就行。 -
Hadoop 3.x 二进制包
推荐 Hadoop 3.3.6(稳定且兼容性好)。到 Apache 官网下载hadoop-3.3.6.tar.gz,解压到D:\hadoop(路径自己定,后面统一用这个举例)。 -
winutils.exe
这是关键。去 GitHub 搜 “winutils hadoop”,找到对应 3.3.6 版本的 winutils 和 hadoop.dll。把它们放到D:\hadoop\bin目录下。没有这个文件,后面格式化 namenode 会直接失败。
下载完后目录结构大致是这样:
D:\hadoop
├── bin
│ ├── hadoop
│ ├── winutils.exe
│ └── hadoop.dll
├── etc
├── sbin
└── ...
配置环境变量(最容易出错的一步)
右键“此电脑”→属性→高级系统设置→环境变量。
-
新建系统变量
- 变量名:
JAVA_HOME
变量值:C:\Java\jdk1.8.0_xxx - 变量名:
HADOOP_HOME
变量值:D:\hadoop
- 变量名:
-
编辑 Path 变量,新增两行:
%JAVA_HOME%\bin%HADOOP_HOME%\bin%HADOOP_HOME%\sbin
配置完重新打开命令提示符,输入:
hadoop version
能看到版本信息就说明环境变量生效了。
修改配置文件(伪分布式核心)
所有配置文件都在 D:\hadoop\etc\hadoop 目录。用记事本或 VS Code 打开,注意保存时编码选 UTF-8。
1. hadoop-env.cmd
找到 set JAVA_HOME 那一行,改成:
set JAVA_HOME=C:\Java\jdk1.8.0_xxx
(路径按自己实际改,不要用 %JAVA_HOME%)
2. core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>D:/hadoop/tmp</value>
</property>
</configuration>
先手动建一个 D:\hadoop\tmp 文件夹。
3. hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/D:/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/D:/hadoop/data/datanode</value>
</property>
</configuration>
同样提前建好 D:\hadoop\data\namenode 和 datanode 两个文件夹。
4. mapred-site.xml
如果没有这个文件,把 mapred-site.xml.template 复制一份改名。内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5. yarn-site.xml
<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>
格式化并启动 Hadoop
打开命令提示符(管理员权限更稳),依次执行:
-
格式化 namenode(只做一次)
hdfs namenode -format看到 “successfully formatted” 就成功了。如果报错,检查 winutils 和路径。
-
启动 HDFS
start-dfs.cmd会弹出两个窗口:namenode 和 datanode。
-
启动 YARN
start-yarn.cmd再弹出 resourcemanager 和 nodemanager 窗口。
-
检查是否成功 浏览器打开:
- HDFS 管理页:http://localhost:9870
- YARN 管理页:http://localhost:8088
两个页面都能打开,说明 Windows 环境下的 Hadoop 已经跑起来了。
验证是否真的能用
随便创建一个目录:
hdfs dfs -mkdir /test
hdfs dfs -ls /
能看到 /test 就说明 HDFS 正常。
再跑一个官方自带的 WordCount 例子(需要先准备输入文件),能出结果就证明 MapReduce 也没问题。
常见坑和解决办法
-
报错 “Error: JAVA_HOME is incorrectly set”
回到 hadoop-env.cmd,把路径写成绝对路径,不要带空格。 -
datanode 起不来
删掉data和tmp文件夹重新格式化,或者检查端口 9000、9866 有没有被占用。 -
权限报错 AccessControlException
在 core-site.xml 加一条:<property> <name>hadoop.security.authorization</name> <value>false</value> </property> -
启动后窗口一闪就关
用hadoop-daemon.cmd单独启动某个进程,看具体报错日志。 -
中文路径乱码
所有路径统一用英文,配置文件编码改成 UTF-8 无 BOM。
进阶小建议
装好后如果觉得命令行不方便,可以再装一个 Hadoop 的 Windows 客户端工具,或者直接用 IDEA 写 MapReduce 程序远程提交。
想更省事的话,后续可以考虑用 WSL2 装 Ubuntu,再在里面搭 Hadoop,性能和兼容性都比原生 Windows 好很多。
单机玩熟了,再去学完全分布式、高可用、Hive、Spark 这些,就轻松多了。
整套流程跟着做一遍,基本就能在 Windows 环境下稳定使用 Hadoop。把每一步的配置文件保存好,下次重装系统也能快速恢复。

还没有评论,来说两句吧...