在配置了HDFS高可用(HA)的CentOS集群中,NameNode分为Active和Standby节点。通过终止Active NameNode进程,可模拟NameNode故障,验证Standby节点是否能自动接管(故障转移)。
操作步骤:
jps命令查看NameNode进程ID(例如44686为Active NameNode的进程ID);kill -9 <NameNode_PID>终止Active NameNode进程;hdfs haadmin -getServiceState nn1(nn1为Active NameNode的逻辑名称),确认状态变为standby,同时nn2(Standby NameNode)变为active。DataNode负责存储实际数据块,模拟其故障可测试HDFS的数据冗余和恢复能力。
操作步骤:
hdfs dfsadmin -report命令查看集群中DataNode列表(记录目标DataNode的主机名或IP);hdfs dfsadmin -refreshNodes刷新节点状态(可选,用于动态下线节点);systemctl stop hadoop-datanode停止DataNode服务,或执行kill -9 <DataNode_PID>终止进程;hdfs dfsadmin -listDeadNodes命令查看是否将目标DataNode标记为“dead”,并通过hdfs fsck /检查数据块的复制情况(确认副本数是否恢复至配置值,如dfs.replication=3)。通过降低文件的副本数,可模拟数据块丢失的场景,测试HDFS的副本修复机制。
操作步骤:
/testfile.txt);hadoop fs -setrep 1 /testfile.txt将文件的副本数设置为1(默认通常为3);hdfs fsck /testfile.txt -files -blocks -locations获取);hdfs fsck /testfile.txt检查数据块状态,确认HDFS是否会自动复制数据块至其他节点(副本数恢复至配置值)。通过填满DataNode磁盘,可模拟磁盘空间不足的故障,测试HDFS的写入限制及告警功能。
操作步骤:
df -h查看磁盘使用情况(选择剩余空间较小的分区,如/data);fallocate命令创建大文件占满磁盘(例如fallocate -l 10G /data/bigfile);hdfs dfs -put /localfile /testdir),确认是否抛出“Disk full”或“No space left on device”错误;rm -rf /data/bigfile)后,验证HDFS是否恢复正常写入。MiniDFSCluster是Hadoop提供的轻量级集成测试工具,可在单机环境中模拟HDFS集群,用于单元测试或本地故障模拟。
操作示例(模拟DataNode故障):
HdfsConfiguration,设置dfs.replication=2(副本数为2)和numDataNodes=3(启动3个DataNode);/replicationTest.txt),并验证副本数是否符合预期;dfsCluster.stopDataNode(0)停止第一个DataNode;以上方法覆盖了HDFS核心组件的故障模拟场景,可根据实际需求选择合适的方式。模拟故障前需确保已备份重要数据,并在测试环境中进行,避免影响生产集群。