第3章 搭建Eclipse开发环境
在 Windows 上用 Eclipse 写 MapReduce:伪分布式环境 + Hadoop 插件 + 跑通官方 WordCount 例子。
本章学习目标
- 能搭建 Hadoop 伪分布式环境
- 能在 Windows 安装配置 JDK 与 Eclipse
- 能配置 Eclipse 的 Hadoop 开发插件与运行参数
- 能运行 Hadoop 自带的 WordCount 示例并看懂输出
本章导览
核心内容
3.1
搭建Hadoop伪分布式环境
伪分布式 = 所有角色(NameNode/DataNode/ResourceManager/NodeManager)跑在同一台机器上,用本地文件系统模拟 HDFS 目录。适合学习与调试,不需要三台虚拟机。
# 1) 只改两处即可
# core-site.xml
<property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
# hdfs-site.xml
<property><name>dfs.replication</name><value>1</value></property>
# 2) 格式化并启动
hdfs namenode -format
start-dfs.sh && start-yarn.sh
jps # NameNode / DataNode / SecondaryNameNode / ResourceManager / NodeManager3.2
在Eclipse中配置Hadoop开发环境
Windows 端需要:JDK → Eclipse → Hadoop 二进制包(用于本地依赖库)→ 环境变量 → Eclipse 插件。
3.2.1
Windows中安装配置JDK
- 安装与 Linux 相同版本的 JDK 8(避免编译版本不一致)
- 配置 JAVA_HOME 与 Path,命令行 <code class="inl">java -version</code> 验证
3.2.2
安装Eclipse并配置Hadoop插件
# 1) 解压 Hadoop 到 Windows(如 D:\hadoop-3.3.1),仅用于依赖库
# 2) 配置环境变量
HADOOP_HOME = D:\hadoop-3.3.1
Path 追加 %HADOOP_HOME%\bin
# 3) 把 hadoop-eclipse-plugin 放入 eclipse/dropins 目录后重启
# 4) Window → Preferences → Hadoop Map/Reduce 指定 Hadoop 安装目录
# 5) 在 Map/Reduce Locations 里新建连接:localhost:9000Windows 上直接跑会报
winutils.exe 缺失或 Could not locate executable null\bin\winutils.exe,把对应版本的 winutils.exe 放到 %HADOOP_HOME%\bin 即可。3.3
演示Hadoop自带的单词统计程序
这是全课程第一个 MapReduce 案例,教材用它把"写代码 → 打包 → 提交 → 看结果"这条链路走通。
# 1) 准备输入数据
hdfs dfs -mkdir -p /input
echo "hello world hello hadoop" > w.txt
hdfs dfs -put w.txt /input/
# 2) 运行自带示例(jar 在 $HADOOP_HOME/share/hadoop/mapreduce/)
hadoop jar hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
# 3) 查看结果
hdfs dfs -cat /output/part-r-00000
# hadoop 1
# hello 2
# world 1WordCount 执行过程(教材第6章会展开讲)
| 环节 | 发生了什么 |
|---|---|
| InputFormat 切片 | w.txt 被切成若干 InputSplit,每个 Split 起一个 Map 任务 |
| Map 阶段 | 每行拆词,输出 (hello,1) (world,1) (hello,1)… |
| Shuffle | 按 key 分区、排序、合并,相同 key 进入同一个 Reduce |
| Reduce 阶段 | 对每个 key 的 value 列表求和,输出最终次数 |
本章小结
本章完成了开发环境的搭建:先搭伪分布式让单机能跑 Hadoop,再在 Windows 端装 JDK、Eclipse 与 Hadoop 插件,最后用官方 WordCount 示例走通"准备数据 → 提交作业 → 查看结果"的完整流程。
思考与练习 先自己做,再点开答案
01
伪分布式与完全分布式的主要区别?
查看参考答案
伪分布式所有守护进程跑在同一台机器,副本数通常设为 1;完全分布式进程分布到多台机器,数据多副本存放,具备真正的容错与并行能力。
02
运行 WordCount 报 "winutils.exe" 相关错误怎么办?
查看参考答案
Windows 端缺少 hadoop 的 winutils 工具:下载与 Hadoop 版本匹配的 winutils.exe 与 hadoop.dll,放到 %HADOOP_HOME%\bin 下,并确保 HADOOP_HOME 已配置。
03
/output 目录已存在时作业为什么失败?
查看参考答案
MapReduce 要求输出目录不存在(防止覆盖已有结果)。删除后重试:hdfs dfs -rm -r /output。