本文是大数据系列第 5 篇,在搭建完毕的三节点集群上执行第一个真正的分布式 MapReduce 计算——WordCount。

完整图文版:CSDN 原文 | 掘金

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 经历三个阶段:

  1. Map:每行文本切词,输出 (word, 1) 键值对
  2. Shuffle:相同 key 的数据汇聚到同一个 Reducer
  3. Reduce:对每个 word 的计数求和,输出最终结果

三节点集群中,Map 任务分布在多个 DataNode 上并行执行,体现了真正的分布式计算。

下一篇:大数据-06 历史服务器配置