本文是大数据系列第 5 篇,在搭建完毕的三节点集群上执行第一个真正的分布式 MapReduce 计算——WordCount。
HDFS 架构回顾
HDFS 采用 Master/Slave 架构:
- NameNode:管理文件系统命名空间,记录 Block 到 DataNode 的映射
- DataNode:存储实际数据 Block,通过心跳向 NameNode 汇报
- Client:上传时将文件切分为 Block,从 NameNode 获取位置,直接与 DataNode 交互
HDFS 设计原则:高容错(默认 3 副本)、高吞吐(顺序读写)、适合大文件批处理,不适合低延迟随机读写。
实战步骤
1. 准备测试文件
# 本地创建测试文本
echo "hello hadoop hello world hadoop" > /opt/wzk/test.txt
2. 创建 HDFS 目录并上传
hdfs dfs -mkdir -p /test/input
hdfs dfs -put /opt/wzk/test.txt /test/input
hdfs dfs -ls /test/input
3. 提交 WordCount 任务
Hadoop 自带 WordCount 示例 jar:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar \
wordcount /test/input /wcoutput
4. 通过 YARN UI 查看任务
访问 http://h123.wzk.icu:8088/cluster/apps,可以看到 RUNNING 状态的 wordcount 任务,完成后状态变为 SUCCEEDED。
5. 查看计算结果
# 列出输出目录
hdfs dfs -ls /wcoutput
# 查看结果
hdfs dfs -cat /wcoutput/part-r-00000
预期输出:
hadoop 2
hello 2
world 1
6. 下载结果到本地
hdfs dfs -get /wcoutput/part-r-00000 /opt/wzk/result.txt
MapReduce 工作原理简述
WordCount 经历三个阶段:
- Map:每行文本切词,输出
(word, 1)键值对 - Shuffle:相同 key 的数据汇聚到同一个 Reducer
- Reduce:对每个 word 的计数求和,输出最终结果
三节点集群中,Map 任务分布在多个 DataNode 上并行执行,体现了真正的分布式计算。
下一篇:大数据-06 历史服务器配置