完成 Hadoop 集群配置后,需要进行全面测试以验证其功能和性能。以下是测试 Hadoop 集群的详细步骤:
1. 基础服务验证
1.1 检查进程状态
在 master 节点执行:
bash
jps
预期输出:
plaintext
NameNode
ResourceManager
SecondaryNameNode
在 slave1/slave2 节点执行:
bash
jps
预期输出:
plaintext
DataNode
NodeManager
1.2 访问 Web 界面
HDFS 管理界面:http://master:9870
检查 Live Nodes 是否显示所有 DataNode(2 个)。YARN 资源管理界面:http://master:8088
检查 Active Nodes 是否显示所有 NodeManager(2 个)。
2. HDFS 功能测试
2.1 文件操作测试
bash
# 创建测试目录
hdfs dfs -mkdir /user/hadoop/test
# 上传本地文件
hdfs dfs -put /etc/hosts /user/hadoop/test/
# 查看文件列表
hdfs dfs -ls /user/hadoop/test
# 查看文件内容
hdfs dfs -cat /user/hadoop/test/hosts
# 下载文件到本地
hdfs dfs -get /user/hadoop/test/hosts ./hosts_copy
# 删除文件
hdfs dfs -rm /user/hadoop/test/hosts
2.2 高可用性测试
停止 NameNode 并验证 SecondaryNameNode 是否接管:
bash
# 在 master 节点停止 NameNode
hdfs --daemon stop namenode
# 访问 SecondaryNameNode 界面:http://master:9868
# 检查是否显示为 Active 状态
# 恢复 NameNode
hdfs --daemon start namenode
3. MapReduce 测试
3.1 运行 Pi 计算示例
bash
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 100
- 参数说明:
10
表示 Map 任务数,100
表示每个任务的迭代次数。 - 预期输出:
最终会计算出 π 的近似值(如3.141592653589793
)。
3.2 运行 WordCount 示例
bash
# 准备测试数据
echo "Hello Hadoop World" > input.txt
echo "Hadoop is awesome" >> input.txt
hdfs dfs -mkdir /user/hadoop/wordcount/input
hdfs dfs -put input.txt /user/hadoop/wordcount/input/
# 执行 WordCount
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount \
/user/hadoop/wordcount/input \
/user/hadoop/wordcount/output
# 查看结果
hdfs dfs -cat /user/hadoop/wordcount/output/part-r-00000
4. 性能测试
4.1 HDFS 写入性能
bash
# 生成 1GB 测试文件
time hdfs dfs -put /dev/zero - | hdfs dfs -appendToFile - /benchmarks/io_write_test
# 计算写入速度(MB/s)
# 总时间 = 输出的 real 时间(秒)
# 写入速度 = 1024MB / 总时间
4.2 HDFS 读取性能
bash
time hdfs dfs -cat /benchmarks/io_write_test > /dev/null
4.3 YARN 资源利用率
在 YARN 管理界面(http://master:8088)查看:
- 集群资源使用情况:总内存、CPU 核心数
- 应用程序统计:运行中 / 已完成的作业
- 节点健康状态:每个 NodeManager 的资源使用
5. 故障恢复测试
5.1 DataNode 故障模拟
bash
# 在 slave1 节点停止 DataNode
hdfs --daemon stop datanode
# 检查 HDFS 界面(http://master:9870)
# 观察 "Dead Nodes" 是否增加到 1 个
# 恢复 DataNode
hdfs --daemon start datanode
5.2 NodeManager 故障模拟
bash
# 在 slave2 节点停止 NodeManager
yarn --daemon stop nodemanager
# 提交一个新作业,观察是否能在剩余节点运行
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 5 50
# 恢复 NodeManager
yarn --daemon start nodemanager
6. 常见问题排查
作业失败:
查看 YARN 界面的应用日志(Application Master 日志链接)。数据不均衡:
执行hdfs balancer
命令平衡数据分布。内存不足:
调整yarn-site.xml
中的yarn.nodemanager.resource.memory-mb
参数。
通过以上测试,你可以全面验证 Hadoop 集群的功能完整性、性能表现和容错能力。如果遇到问题,请参考 Hadoop 日志文件(默认位于 /opt/hadoop/logs
)进行详细排查