1. 首页 > Hadoop教程 > 正文

大数据教程FG180-Hadoop磁盘损坏模拟恢复实战

本文详细介绍Hadoop磁盘损坏模拟恢复实战,包括故障预防、磁盘监控、故障模拟、磁盘替换、数据恢复等内容,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com

Part01-基础概念与理论知识

1.1 磁盘损坏概述

磁盘损坏是指磁盘硬件故障或数据损坏导致无法正常读写。更多视频教程www.fgedu.net.cn

常见原因:

  • 硬件故障
  • 坏道
  • 固件问题
  • 电源问题
  • 人为错误

1.2 损坏类型

损坏类型:

# 损坏类型
1. 硬件故障
– 磁盘完全损坏
– 无法识别
– 无法读写
– 需要更换磁盘

2. 坏道
– 部分扇区损坏
– 部分数据损坏
– 其他部分可用

3. 文件系统损坏
– 文件系统错误
– 目录损坏
– 元数据损坏

4. 数据块损坏
– HDFS数据块损坏
– 校验和错误
– 可从其他副本恢复

1.3 恢复原理

恢复原理:

风哥提示:HDFS通过多副本保障数据安全。单个DataNode或单个磁盘损坏不会丢失数据,会自动从其他副本恢复。更多学习教程公众号风哥教程itpux_com

Part02-生产环境规划与建议

2.1 预防措施

预防措施:

# 预防措施
1. 硬件选择
– 企业级硬盘
– SAS/SATA SSD
– 品牌硬盘
– 质保时间长

2. RAID配置
– RAID 1/5/6/10
– 热备盘
– 定期检查

3. 电源保护
– UPS
– 双路电源
– 稳定电压

4. 环境控制
– 温度控制
– 湿度控制
– 防尘
– 防静电

2.2 磁盘监控

磁盘监控:

监控指标:

  • SMART:磁盘健康状态
  • IO错误:读写错误
  • 坏道:坏道数量
  • 使用率:磁盘使用率

from bigdata视频:www.itpux.com

2.3 RAID配置

RAID配置:

# RAID级别
1. RAID 0
– 条带化
– 性能好
– 无冗余
– 不适合生产

2. RAID 1
– 镜像
– 100%冗余
– 性能一般
– 适合系统盘

3. RAID 5
– 分布式奇偶校验
– 一块盘冗余
– 读性能好
– 写性能一般

4. RAID 6
– 双分布式奇偶校验
– 两块盘冗余
– 更安全
– 写性能较差

5. RAID 10
– 镜像+条带
– 性能好
– 冗余好
– 成本高

# 建议
– 系统盘:RAID 1
– 数据盘:RAID 5/6/10
– NameNode:RAID 10
– DataNode:RAID 5/6

Part03-生产环境项目实施方案

3.1 故障模拟

3.1.1 模拟坏道

# 模拟磁盘故障
# 警告:仅在测试环境执行!

# 1. 查看磁盘
lsblk
fdisk -l

# 2. 查看SMART信息
smartctl -a /dev/sda

# 3. 模拟磁盘只读(使用dmsetup)
# 这会让磁盘变成只读,模拟故障
# 注意:有风险!

# 或者,卸载磁盘模拟故障
umount /bigdata/fgdata/disk1

# 4. 观察HDFS
sleep 300
hdfs dfsadmin -report
hdfs fsck /

3.1.2 模拟数据块损坏

# 模拟数据块损坏
# 警告:仅在测试环境执行!

# 1. 创建测试文件
hdfs dfs -mkdir -p /disk_test
hdfs dfs -put /etc/passwd /disk_test/
hdfs dfs -ls /disk_test/

# 2. 找到该文件的数据块
hdfs fsck /disk_test/passwd -files -blocks

# 3. 在DataNode上找到该块并破坏
# 假设块在fgedu-dn01上
ssh fgedu-dn01
cd /bigdata/fgdata/hdfs/data/current/
# 找到对应的块文件
# 用随机数据覆盖它
echo “corrupted data” > blk_123456789

# 4. 观察HDFS
hdfs fsck /
# 应该看到Corrupt blocks

# 5. 恢复
# HDFS会自动从其他副本恢复
sleep 300
hdfs fsck /

3.2 磁盘替换

3.2.1 DataNode磁盘替换

# DataNode磁盘替换
# 场景:DataNode一块磁盘损坏,需要替换

# 1. 停止DataNode
hdfs –daemon stop datanode

# 2. 标记磁盘为损坏
# hdfs-site.xml配置的目录
# 假设坏盘是/bigdata/fgdata/disk1
# 从配置中移除该目录
# 或者直接umount

# 3. 物理更换磁盘
# 断电
# 拔出坏盘
# 插入新盘
# 上电

# 4. 分区格式化新盘
fdisk /dev/sdb
mkfs.xfs /dev/sdb1

# 5. 挂载新盘
mkdir -p /bigdata/fgdata/disk1
mount /dev/sdb1 /bigdata/fgdata/disk1
echo “/dev/sdb1 /bigdata/fgdata/disk1 xfs defaults 0 0” >> /etc/fstab

# 6. 设置权限
chown -R hadoop:hadoop /bigdata/fgdata/disk1
chmod 700 /bigdata/fgdata/disk1

# 7. 启动DataNode
hdfs –daemon start datanode
sleep 60

# 8. 验证
jps
hdfs dfsadmin -report
hdfs fsck /

3.3 数据恢复

3.3.1 数据块自动恢复

# 数据块自动恢复
# HDFS会自动检测和恢复

# 1. 检查坏块
hdfs fsck / -list-corruptfileblocks

# 2. 如果有副本,自动恢复
# 等待HDFS自动恢复
sleep 300

# 3. 检查恢复状态
hdfs fsck /

# 4. 如果没有副本,需要手动处理
# 查看哪个文件损坏
hdfs fsck / -list-corruptfileblocks

# 删除损坏的文件(如果可以接受丢失)
hdfs fsck / -delete

# 或者从备份恢复
hdfs dfs -cp /backup/corrupted_file /path/to/dest

风哥提示:HDFS设计时就考虑了磁盘故障。只要有足够的副本,单个磁盘损坏不会丢失数据,HDFS会自动恢复。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 DataNode磁盘损坏

4.1.1 实战案例

# DataNode磁盘损坏实战
# 场景:DataNode一块磁盘损坏

# 1. 发现问题
# 监控告警
# 查看日志
tail -n 100 /bigdata/app/hadoop/logs/hadoop-hdfs-datanode-*.log

# 输出示例:
# ERROR … – DiskErrorException: /bigdata/fgdata/disk1

# 2. 检查磁盘
ssh fgedu-dn01
dmesg | tail -100
smartctl -a /dev/sdb
fdisk -l
lsblk
df -h

# 3. 确定磁盘损坏
# 磁盘不可读
# 有大量IO错误
# SMART显示故障

# 4. 停止DataNode
hdfs –daemon stop datanode

# 5. 卸载坏盘
umount /bigdata/fgdata/disk1

# 6. 更新hdfs-site.xml
# 从dfs.datanode.data.dir中移除该目录
# 或者保留,HDFS会跳过不可用的目录

# 7. 启动DataNode
hdfs –daemon start datanode
sleep 60

# 8. 检查状态
jps
hdfs dfsadmin -report

# 9. 观察块复制
hdfs fsck /
# 应该看到Under-replicated blocks正在复制

# 10. 物理更换磁盘
# 在维护窗口更换磁盘
# 重新挂载
# 重新添加到配置

4.2 NameNode磁盘损坏

4.2.1 实战案例

# NameNode磁盘损坏实战
# 场景:NameNode系统盘损坏

# 1. 发现问题
# 监控告警
# NameNode服务不可用
# 检查日志

# 2. 检查HA
# 查看NameNode状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

# 3. 如果有Standby,应该已经自动切换
# 验证
hdfs dfs -ls /

# 4. 修复故障的NameNode
# 重装系统
# 或者更换磁盘
# 恢复配置
# 从其他NameNode同步元数据

# 5. 初始化NameNode
# 同步Standby NameNode
hdfs namenode -bootstrapStandby

# 6. 启动NameNode
hdfs –daemon start namenode
sleep 30

# 7. 检查状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

4.3 数据块损坏

4.3.1 实战案例

# 数据块损坏实战
# 场景:HDFS报告Corrupt blocks

# 1. 检查坏块
hdfs fsck / -list-corruptfileblocks

# 输出示例:
# /user/fgedu/corrupt_file: CORRUPT blockpool BP-123456789-192.168.1.10-1234567890123 block blk_123456789_123456789

# 2. 检查文件
hdfs fsck /user/fgedu/corrupt_file -files -blocks -locations

# 3. 检查是否有副本
# 查看每个块的副本位置
# 如果有其他副本,HDFS会自动恢复
# 等待自动恢复
echo “Waiting for auto-recovery…”
sleep 600

# 4. 重新检查
hdfs fsck /

# 5. 如果没有副本,无法自动恢复
# 选项1:删除损坏文件
hdfs fsck /user/fgedu/corrupt_file -delete

# 选项2:从备份恢复
hdfs dfs -cp /backup/user/fgedu/corrupt_file /user/fgedu/

# 6. 验证
hdfs dfs -cat /user/fgedu/corrupt_file | head

生产环境建议:磁盘故障是常见故障。要配置RAID、做好监控、定期检查SMART。HDFS多副本能保障数据安全。更多视频教程www.fgedu.net.cn

Part05-风哥经验总结与分享

5.1 最佳实践

最佳实践:

  • RAID:配置RAID保护数据
  • 监控:SMART监控、IO错误监控
  • 备件:准备热备盘或备件
  • 定期检查:定期检查磁盘健康
  • 多副本:HDFS至少3副本

5.2 经验教训

# 经验教训
1. 不配置RAID
– 教训:单盘故障导致长时间不可用
– 改进:配置RAID

2. 不监控磁盘
– 教训:故障发现晚
– 改进:配置SMART和IO监控

3. 没有备件
– 教训:等备件等很久
– 改进:准备热备盘或备件

4. 副本数太少
– 教训:两块盘坏丢失数据
– 改进:至少3副本

5.3 检查清单

# 检查清单
## 日常检查
– [ ] SMART状态正常
– [ ] 无IO错误
– [ ] 磁盘使用率正常
– [ ] RAID状态正常
– [ ] 备盘可用

## 故障处理
– [ ] 及时发现故障
– [ ] 快速定位故障磁盘
– [ ] 安全更换磁盘
– [ ] 验证恢复成功
– [ ] 观察数据复制

风哥提示:磁盘是易损部件,故障概率较高。要做好预防、监控、备件、预案,确保磁盘故障时能够快速恢复。HDFS多副本是数据安全的最后一道保障。学习交流加群风哥微信: itpux-com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息