目录大纲
- Part01-NameNode元数据基础概念与理论知识
- 1.1 NameNode元数据的定义与作用
- 1.2 NameNode元数据的存储结构
- 1.3 NameNode元数据损坏的原因分析
- Part02-NameNode元数据备份与预防措施
- 2.1 元数据备份策略
- 2.2 高可用架构设计
- 2.3 监控与预警机制
- Part03-NameNode元数据恢复实施方案
- 3.1 从备份恢复元数据
- 3.2 使用FSImage和EditLog恢复
- 3.3 从SecondaryNameNode恢复
- 3.4 使用JournalNode恢复
- Part04-NameNode元数据恢复生产案例与实战讲解
- 4.1 案例一:NameNode元数据损坏恢复
- 4.2 案例二:从SecondaryNameNode恢复
- 4.3 案例三:JournalNode数据损坏恢复
- Part05-风哥经验总结与分享
- 5.1 NameNode元数据管理最佳实践
- 5.2 常见问题与解决方案
- 5.3 应急响应流程
Part01-NameNode元数据基础概念与理论知识
1.1 NameNode元数据的定义与作用
NameNode元数据是HDFS的核心组成部分,存储了文件系统的目录结构、文件与数据块的映射关系等关键信息。
# NameNode元数据的主要内容
1. 文件系统目录树结构
2. 文件与数据块的映射关系
3. 文件属性(权限、修改时间等)
4. 数据块的位置信息
5. 集群配置信息
1. 文件系统目录树结构
2. 文件与数据块的映射关系
3. 文件属性(权限、修改时间等)
4. 数据块的位置信息
5. 集群配置信息
1.2 NameNode元数据的存储结构
NameNode元数据存储在两个主要文件中:FSImage和EditLog。
# NameNode元数据存储结构
1. FSImage:存储文件系统的完整状态快照
2. EditLog:存储文件系统的操作日志
3. 检查点:定期将EditLog合并到FSImage中
4. 元数据目录:默认为$HADOOP_HOME/data/dfs/namenode
1. FSImage:存储文件系统的完整状态快照
2. EditLog:存储文件系统的操作日志
3. 检查点:定期将EditLog合并到FSImage中
4. 元数据目录:默认为$HADOOP_HOME/data/dfs/namenode
1.3 NameNode元数据损坏的原因分析
NameNode元数据损坏的主要原因包括:
# NameNode元数据损坏的常见原因
1. 硬件故障:磁盘损坏、服务器宕机
2. 软件故障:异常关闭、进程崩溃
3. 人为操作:误删除、格式化
4. 环境问题:断电、网络中断
5. 配置错误:磁盘空间不足、权限问题
学习交流加群风哥微信: itpux-com
1. 硬件故障:磁盘损坏、服务器宕机
2. 软件故障:异常关闭、进程崩溃
3. 人为操作:误删除、格式化
4. 环境问题:断电、网络中断
5. 配置错误:磁盘空间不足、权限问题
学习交流加群风哥微信: itpux-com
Part02-NameNode元数据备份与预防措施
2.1 元数据备份策略
# 元数据备份策略
# 1. 定期备份脚本
[root@fgedu.net.cn ~]# vi /bigdata/scripts/backup_namenode.sh
#!/bin/bash
# backup_namenode.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 进入安全模式
/bigdata/app/hadoop/bin/hdfs dfsadmin -safemode enter
# 保存命名空间
/bigdata/app/hadoop/bin/hdfs dfsadmin -saveNamespace
# 备份元数据
BACKUP_DIR=”/bigdata/backup/namenode/$(date +%Y%m%d_%H%M%S)”
mkdir -p $BACKUP_DIR
cp -r /bigdata/fgdata/hdfs/namenode/current $BACKUP_DIR/
# 退出安全模式
/bigdata/app/hadoop/bin/hdfs dfsadmin -safemode leave
# 2. 定期执行备份
[root@fgedu.net.cn ~]# crontab -l
0 0 * * * /bigdata/scripts/backup_namenode.sh
0 12 * * * /bigdata/scripts/backup_namenode.sh
# 3. 备份验证
[root@fgedu.net.cn ~]# ls -la /bigdata/backup/namenode/
total 24
drwxr-xr-x 5 root root 4096 Apr 8 00:00 .
drwxr-xr-x 10 root root 4096 Apr 1 00:00 ..
drwxr-xr-x 2 root root 4096 Apr 7 00:00 20260407_000000
drwxr-xr-x 2 root root 4096 Apr 7 12:00 20260407_120000
drwxr-xr-x 2 root root 4096 Apr 8 00:00 20260408_000000
更多视频教程www.fgedu.net.cn
# 1. 定期备份脚本
[root@fgedu.net.cn ~]# vi /bigdata/scripts/backup_namenode.sh
#!/bin/bash
# backup_namenode.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 进入安全模式
/bigdata/app/hadoop/bin/hdfs dfsadmin -safemode enter
# 保存命名空间
/bigdata/app/hadoop/bin/hdfs dfsadmin -saveNamespace
# 备份元数据
BACKUP_DIR=”/bigdata/backup/namenode/$(date +%Y%m%d_%H%M%S)”
mkdir -p $BACKUP_DIR
cp -r /bigdata/fgdata/hdfs/namenode/current $BACKUP_DIR/
# 退出安全模式
/bigdata/app/hadoop/bin/hdfs dfsadmin -safemode leave
# 2. 定期执行备份
[root@fgedu.net.cn ~]# crontab -l
0 0 * * * /bigdata/scripts/backup_namenode.sh
0 12 * * * /bigdata/scripts/backup_namenode.sh
# 3. 备份验证
[root@fgedu.net.cn ~]# ls -la /bigdata/backup/namenode/
total 24
drwxr-xr-x 5 root root 4096 Apr 8 00:00 .
drwxr-xr-x 10 root root 4096 Apr 1 00:00 ..
drwxr-xr-x 2 root root 4096 Apr 7 00:00 20260407_000000
drwxr-xr-x 2 root root 4096 Apr 7 12:00 20260407_120000
drwxr-xr-x 2 root root 4096 Apr 8 00:00 20260408_000000
更多视频教程www.fgedu.net.cn
2.2 高可用架构设计
# 高可用架构设计
# 1. NameNode高可用配置
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
dfs.nameservices
hdfscluster
dfs.ha.namenodes.hdfscluster
nn1,nn2
dfs.namenode.rpc-address.hdfscluster.nn1
fgedu.net.cn:8020
dfs.namenode.rpc-address.hdfscluster.nn2
fgedu-backup.net.cn:8020
dfs.namenode.shared.edits.dir
qjournal://zk1:8485;zk2:8485;zk3:8485/hdfscluster
dfs.ha.automatic-failover.enabled
true
# 1. NameNode高可用配置
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
# 2. JournalNode配置
[root@zk1 ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
2.3 监控与预警机制
# 监控与预警机制
# 1. NameNode状态监控
[root@fgedu.net.cn ~]# vi /bigdata/app/prometheus/rules/namenode_alerts.yml
groups:
– name: namenode_alerts
rules:
– alert: NameNodeDown
expr: hadoop_namenode_is_active == 0
for: 5m
labels:
severity: critical
annotations:
summary: “NameNode Down”
description: “NameNode on {{ $labels.instance }} is down”
# 2. 元数据健康检查
[root@fgedu.net.cn ~]# /bigdata/app/hadoop/bin/hdfs dfsadmin -report
# 3. 定期验证元数据完整性
[root@fgedu.net.cn ~]# vi /bigdata/scripts/check_namenode.sh
#!/bin/bash
# check_namenode.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
/bigdata/app/hadoop/bin/hdfs fsck / > /bigdata/logs/fsck_$(date +%Y%m%d).log
# 4. 磁盘空间监控
[root@fgedu.net.cn ~]# df -h /bigdata/fgdata/
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 1.0T 100G 900G 10% /bigdata/fgdata
from bigdata视频:www.itpux.com
# 1. NameNode状态监控
[root@fgedu.net.cn ~]# vi /bigdata/app/prometheus/rules/namenode_alerts.yml
groups:
– name: namenode_alerts
rules:
– alert: NameNodeDown
expr: hadoop_namenode_is_active == 0
for: 5m
labels:
severity: critical
annotations:
summary: “NameNode Down”
description: “NameNode on {{ $labels.instance }} is down”
# 2. 元数据健康检查
[root@fgedu.net.cn ~]# /bigdata/app/hadoop/bin/hdfs dfsadmin -report
# 3. 定期验证元数据完整性
[root@fgedu.net.cn ~]# vi /bigdata/scripts/check_namenode.sh
#!/bin/bash
# check_namenode.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
/bigdata/app/hadoop/bin/hdfs fsck / > /bigdata/logs/fsck_$(date +%Y%m%d).log
# 4. 磁盘空间监控
[root@fgedu.net.cn ~]# df -h /bigdata/fgdata/
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 1.0T 100G 900G 10% /bigdata/fgdata
from bigdata视频:www.itpux.com
Part03-NameNode元数据恢复实施方案
3.1 从备份恢复元数据
# 从备份恢复元数据
# 1. 停止HDFS服务
[root@fgedu.net.cn ~]# stop-dfs.sh
# 2. 备份当前元数据(如果可能)
[root@fgedu.net.cn ~]# cp -r /bigdata/fgdata/hdfs/namenode/current /bigdata/backup/namenode/current_$(date +%Y%m%d)
# 3. 清除损坏的元数据
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
# 4. 从备份恢复
[root@fgedu.net.cn ~]# cp -r /bigdata/backup/namenode/20260407_000000/current /bigdata/fgdata/hdfs/namenode/
# 5. 修复权限
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
# 6. 启动HDFS服务
[root@fgedu.net.cn ~]# start-dfs.sh
# 7. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
学习交流加群风哥QQ113257174
# 1. 停止HDFS服务
[root@fgedu.net.cn ~]# stop-dfs.sh
# 2. 备份当前元数据(如果可能)
[root@fgedu.net.cn ~]# cp -r /bigdata/fgdata/hdfs/namenode/current /bigdata/backup/namenode/current_$(date +%Y%m%d)
# 3. 清除损坏的元数据
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
# 4. 从备份恢复
[root@fgedu.net.cn ~]# cp -r /bigdata/backup/namenode/20260407_000000/current /bigdata/fgdata/hdfs/namenode/
# 5. 修复权限
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
# 6. 启动HDFS服务
[root@fgedu.net.cn ~]# start-dfs.sh
# 7. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
学习交流加群风哥QQ113257174
3.2 使用FSImage和EditLog恢复
# 使用FSImage和EditLog恢复
# 1. 检查元数据文件
[root@fgedu.net.cn ~]# ls -la /bigdata/fgdata/hdfs/namenode/current/
total 10240
-rw-r–r– 1 fgedu fgedu 1048576 Apr 7 00:00 fsimage_0000000000000000000
-rw-r–r– 1 fgedu fgedu 64 Apr 7 00:00 fsimage_0000000000000000000.md5
-rw-r–r– 1 fgedu fgedu 10240 Apr 8 10:00 edits_inprogress_0000000000000000001
-rw-r–r– 1 fgedu fgedu 42 Apr 7 00:00 seen_txid
# 2. 停止NameNode
[root@fgedu.net.cn ~]# hdfs –daemon stop namenode
# 3. 合并FSImage和EditLog
[root@fgedu.net.cn ~]# hdfs namenode -recover -force -rolling
# 4. 启动NameNode
[root@fgedu.net.cn ~]# hdfs –daemon start namenode
# 5. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfs -ls /user/fgedu
Found 2 items
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/data
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/output
风哥提示:合并FSImage和EditLog可以恢复到最近的一致性状态
# 1. 检查元数据文件
[root@fgedu.net.cn ~]# ls -la /bigdata/fgdata/hdfs/namenode/current/
total 10240
-rw-r–r– 1 fgedu fgedu 1048576 Apr 7 00:00 fsimage_0000000000000000000
-rw-r–r– 1 fgedu fgedu 64 Apr 7 00:00 fsimage_0000000000000000000.md5
-rw-r–r– 1 fgedu fgedu 10240 Apr 8 10:00 edits_inprogress_0000000000000000001
-rw-r–r– 1 fgedu fgedu 42 Apr 7 00:00 seen_txid
# 2. 停止NameNode
[root@fgedu.net.cn ~]# hdfs –daemon stop namenode
# 3. 合并FSImage和EditLog
[root@fgedu.net.cn ~]# hdfs namenode -recover -force -rolling
# 4. 启动NameNode
[root@fgedu.net.cn ~]# hdfs –daemon start namenode
# 5. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfs -ls /user/fgedu
Found 2 items
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/data
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/output
风哥提示:合并FSImage和EditLog可以恢复到最近的一致性状态
3.3 从SecondaryNameNode恢复
# 从SecondaryNameNode恢复
# 1. 检查SecondaryNameNode备份
[root@secondary-nn ~]# ls -la /bigdata/fgdata/hdfs/secondarynamenode/
total 10240
drwxr-xr-x 2 fgedu fgedu 4096 Apr 8 00:00 .
drwxr-xr-x 10 fgedu fgedu 4096 Apr 1 00:00 ..
-rw-r–r– 1 fgedu fgedu 1048576 Apr 8 00:00 fsimage_0000000000000000000
-rw-r–r– 1 fgedu fgedu 64 Apr 8 00:00 fsimage_0000000000000000000.md5
# 2. 停止HDFS服务
[root@fgedu.net.cn ~]# stop-dfs.sh
# 3. 复制SecondaryNameNode备份到NameNode
[root@secondary-nn ~]# scp -r /bigdata/fgdata/hdfs/secondarynamenode/* fgedu.net.cn:/bigdata/backup/namenode/secondary/
# 4. 恢复元数据
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# cp -r /bigdata/backup/namenode/secondary /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
# 5. 启动HDFS服务
[root@fgedu.net.cn ~]# start-dfs.sh
# 6. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
# 1. 检查SecondaryNameNode备份
[root@secondary-nn ~]# ls -la /bigdata/fgdata/hdfs/secondarynamenode/
total 10240
drwxr-xr-x 2 fgedu fgedu 4096 Apr 8 00:00 .
drwxr-xr-x 10 fgedu fgedu 4096 Apr 1 00:00 ..
-rw-r–r– 1 fgedu fgedu 1048576 Apr 8 00:00 fsimage_0000000000000000000
-rw-r–r– 1 fgedu fgedu 64 Apr 8 00:00 fsimage_0000000000000000000.md5
# 2. 停止HDFS服务
[root@fgedu.net.cn ~]# stop-dfs.sh
# 3. 复制SecondaryNameNode备份到NameNode
[root@secondary-nn ~]# scp -r /bigdata/fgdata/hdfs/secondarynamenode/* fgedu.net.cn:/bigdata/backup/namenode/secondary/
# 4. 恢复元数据
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# cp -r /bigdata/backup/namenode/secondary /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
# 5. 启动HDFS服务
[root@fgedu.net.cn ~]# start-dfs.sh
# 6. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
3.4 使用JournalNode恢复
# 使用JournalNode恢复
# 1. 检查JournalNode状态
[root@zk1 ~]# jps | grep JournalNode
12345 JournalNode
# 2. 检查JournalNode数据
[root@zk1 ~]# ls -la /bigdata/fgdata/hdfs/journalnode/hdfscluster/
total 24
drwxr-xr-x 3 fgedu fgedu 4096 Apr 8 00:00 .
drwxr-xr-x 10 fgedu fgedu 4096 Apr 1 00:00 ..
drwxr-xr-x 2 fgedu fgedu 4096 Apr 8 00:00 edits
# 3. 停止NameNode
[root@fgedu.net.cn ~]# hdfs –daemon stop namenode
# 4. 从JournalNode恢复
[root@fgedu.net.cn ~]# hdfs namenode -initializeSharedEdits
# 5. 启动NameNode
[root@fgedu.net.cn ~]# hdfs –daemon start namenode
# 6. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfs -ls /
Found 3 items
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /tmp
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /var
# 1. 检查JournalNode状态
[root@zk1 ~]# jps | grep JournalNode
12345 JournalNode
# 2. 检查JournalNode数据
[root@zk1 ~]# ls -la /bigdata/fgdata/hdfs/journalnode/hdfscluster/
total 24
drwxr-xr-x 3 fgedu fgedu 4096 Apr 8 00:00 .
drwxr-xr-x 10 fgedu fgedu 4096 Apr 1 00:00 ..
drwxr-xr-x 2 fgedu fgedu 4096 Apr 8 00:00 edits
# 3. 停止NameNode
[root@fgedu.net.cn ~]# hdfs –daemon stop namenode
# 4. 从JournalNode恢复
[root@fgedu.net.cn ~]# hdfs namenode -initializeSharedEdits
# 5. 启动NameNode
[root@fgedu.net.cn ~]# hdfs –daemon start namenode
# 6. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfs -ls /
Found 3 items
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /tmp
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /var
Part04-NameNode元数据恢复生产案例与实战讲解
4.1 案例一:NameNode元数据损坏恢复
案例背景
某生产环境Hadoop集群的NameNode服务器突然宕机,重启后发现元数据损坏,NameNode无法启动。
恢复过程
# 1. 故障诊断
[root@fgedu.net.cn ~]# jps
12345 ResourceManager
67890 NodeManager
# NameNode进程未运行
# 2. 检查日志
[root@fgedu.net.cn ~]# tail -n 100 /bigdata/app/hadoop/logs/hadoop-fgedu-namenode-fgedu.net.cn.log
2026-04-08 10:00:00,123 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.io.IOException: NameNode metadata corruption
# 3. 从备份恢复
[root@fgedu.net.cn ~]# stop-dfs.sh
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# cp -r /bigdata/backup/namenode/20260407_000000/current /bigdata/fgdata/hdfs/namenode/
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# start-dfs.sh
# 4. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
# 5. 检查文件系统
[root@fgedu.net.cn ~]# hdfs dfs -ls /user/fgedu
Found 2 items
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/data
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/output
# 执行结果
# NameNode元数据成功恢复,集群恢复正常
更多视频教程www.fgedu.net.cn
[root@fgedu.net.cn ~]# jps
12345 ResourceManager
67890 NodeManager
# NameNode进程未运行
# 2. 检查日志
[root@fgedu.net.cn ~]# tail -n 100 /bigdata/app/hadoop/logs/hadoop-fgedu-namenode-fgedu.net.cn.log
2026-04-08 10:00:00,123 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.io.IOException: NameNode metadata corruption
# 3. 从备份恢复
[root@fgedu.net.cn ~]# stop-dfs.sh
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# cp -r /bigdata/backup/namenode/20260407_000000/current /bigdata/fgdata/hdfs/namenode/
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
[root@fgedu.net.cn ~]# start-dfs.sh
# 4. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
# 5. 检查文件系统
[root@fgedu.net.cn ~]# hdfs dfs -ls /user/fgedu
Found 2 items
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/data
drwxr-xr-x – fgedu supergroup 0 2026-04-07 10:00 /user/fgedu/output
# 执行结果
# NameNode元数据成功恢复,集群恢复正常
更多视频教程www.fgedu.net.cn
4.2 案例二:从SecondaryNameNode恢复
案例背景
某Hadoop集群的NameNode服务器磁盘损坏,无法从本地备份恢复,需要从SecondaryNameNode恢复元数据。
恢复过程
# 1. 故障诊断
[root@fgedu.net.cn ~]# df -h /bigdata/fgdata/
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 1.0T 1.0T 0 100% /bigdata/fgdata
# 磁盘空间满,导致元数据损坏
# 2. 检查SecondaryNameNode备份
[root@secondary-nn ~]# ls -la /bigdata/fgdata/hdfs/secondarynamenode/
total 10240
drwxr-xr-x 2 fgedu fgedu 4096 Apr 8 00:00 .
drwxr-xr-x 10 fgedu fgedu 4096 Apr 1 00:00 ..
-rw-r–r– 1 fgedu fgedu 1048576 Apr 8 00:00 fsimage_0000000000000000000
-rw-r–r– 1 fgedu fgedu 64 Apr 8 00:00 fsimage_0000000000000000000.md5
# 3. 清理磁盘空间
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
# 4. 从SecondaryNameNode恢复
[root@secondary-nn ~]# scp -r /bigdata/fgdata/hdfs/secondarynamenode/* fgedu.net.cn:/bigdata/fgdata/hdfs/namenode/current/
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
# 5. 启动HDFS服务
[root@fgedu.net.cn ~]# start-dfs.sh
# 6. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
# 执行结果
# 从SecondaryNameNode成功恢复元数据,集群恢复正常
学习交流加群风哥微信: itpux-com
[root@fgedu.net.cn ~]# df -h /bigdata/fgdata/
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 1.0T 1.0T 0 100% /bigdata/fgdata
# 磁盘空间满,导致元数据损坏
# 2. 检查SecondaryNameNode备份
[root@secondary-nn ~]# ls -la /bigdata/fgdata/hdfs/secondarynamenode/
total 10240
drwxr-xr-x 2 fgedu fgedu 4096 Apr 8 00:00 .
drwxr-xr-x 10 fgedu fgedu 4096 Apr 1 00:00 ..
-rw-r–r– 1 fgedu fgedu 1048576 Apr 8 00:00 fsimage_0000000000000000000
-rw-r–r– 1 fgedu fgedu 64 Apr 8 00:00 fsimage_0000000000000000000.md5
# 3. 清理磁盘空间
[root@fgedu.net.cn ~]# rm -rf /bigdata/fgdata/hdfs/namenode/current
# 4. 从SecondaryNameNode恢复
[root@secondary-nn ~]# scp -r /bigdata/fgdata/hdfs/secondarynamenode/* fgedu.net.cn:/bigdata/fgdata/hdfs/namenode/current/
[root@fgedu.net.cn ~]# chown -R fgedu:fgedu /bigdata/fgdata/hdfs/namenode/current
# 5. 启动HDFS服务
[root@fgedu.net.cn ~]# start-dfs.sh
# 6. 验证恢复结果
[root@fgedu.net.cn ~]# hdfs dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 879609302016 (819.2 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
# 执行结果
# 从SecondaryNameNode成功恢复元数据,集群恢复正常
学习交流加群风哥微信: itpux-com
4.3 案例三:JournalNode数据损坏恢复
案例背景
某Hadoop高可用集群的JournalNode数据损坏,导致NameNode无法同步元数据。
恢复过程
# 1. 故障诊断
[root@fgedu.net.cn ~]# hdfs haadmin -getServiceState nn1
active
[root@fgedu-backup.net.cn ~]# hdfs haadmin -getServiceState nn2
standby
# 主备NameNode状态正常
# 2. 检查JournalNode状态
[root@zk1 ~]# jps | grep JournalNode
12345 JournalNode
[root@zk2 ~]# jps | grep JournalNode
12345 JournalNode
[root@zk3 ~]# jps | grep JournalNode
# JournalNode进程未运行
# 3. 检查JournalNode日志
[root@zk3 ~]# tail -n 100 /bigdata/app/hadoop/logs/hadoop-fgedu-journalnode-zk3.log
2026-04-08 10:00:00,123 ERROR org.apache.hadoop.hdfs.qjournal.server.JournalNode: Failed to start journalnode.
java.io.IOException: Journal directory /bigdata/fgdata/hdfs/journalnode is corrupt
# 4. 修复JournalNode
[root@zk3 ~]# rm -rf /bigdata/fgdata/hdfs/journalnode/*
[root@zk3 ~]# hdfs journalnode
# 5. 同步JournalNode数据
[root@fgedu.net.cn ~]# hdfs namenode -initializeSharedEdits
# 6. 验证恢复结果
[root@zk3 ~]# jps | grep JournalNode
12345 JournalNode
[root@fgedu.net.cn ~]# hdfs haadmin -getServiceState nn1
active
[root@fgedu-backup.net.cn ~]# hdfs haadmin -getServiceState nn2
standby
# 执行结果
# JournalNode成功恢复,NameNode元数据同步正常
更多学习教程公众号风哥教程itpux_com
[root@fgedu.net.cn ~]# hdfs haadmin -getServiceState nn1
active
[root@fgedu-backup.net.cn ~]# hdfs haadmin -getServiceState nn2
standby
# 主备NameNode状态正常
# 2. 检查JournalNode状态
[root@zk1 ~]# jps | grep JournalNode
12345 JournalNode
[root@zk2 ~]# jps | grep JournalNode
12345 JournalNode
[root@zk3 ~]# jps | grep JournalNode
# JournalNode进程未运行
# 3. 检查JournalNode日志
[root@zk3 ~]# tail -n 100 /bigdata/app/hadoop/logs/hadoop-fgedu-journalnode-zk3.log
2026-04-08 10:00:00,123 ERROR org.apache.hadoop.hdfs.qjournal.server.JournalNode: Failed to start journalnode.
java.io.IOException: Journal directory /bigdata/fgdata/hdfs/journalnode is corrupt
# 4. 修复JournalNode
[root@zk3 ~]# rm -rf /bigdata/fgdata/hdfs/journalnode/*
[root@zk3 ~]# hdfs journalnode
# 5. 同步JournalNode数据
[root@fgedu.net.cn ~]# hdfs namenode -initializeSharedEdits
# 6. 验证恢复结果
[root@zk3 ~]# jps | grep JournalNode
12345 JournalNode
[root@fgedu.net.cn ~]# hdfs haadmin -getServiceState nn1
active
[root@fgedu-backup.net.cn ~]# hdfs haadmin -getServiceState nn2
standby
# 执行结果
# JournalNode成功恢复,NameNode元数据同步正常
更多学习教程公众号风哥教程itpux_com
Part05-风哥经验总结与分享
5.1 NameNode元数据管理最佳实践
# NameNode元数据管理最佳实践
1. 定期备份:每天至少进行一次元数据备份
2. 多副本存储:使用高可用架构,确保元数据多副本
3. 监控告警:实时监控NameNode状态和元数据健康
4. 磁盘管理:确保元数据存储磁盘有足够空间
5. 安全操作:规范操作流程,避免误操作
6. 定期检查:使用fsck工具定期检查文件系统完整性
7. 灾备方案:建立跨机房灾备机制
8. 文档化:建立详细的元数据管理和恢复文档
风哥提示:NameNode元数据是HDFS的核心,需要特别重视其管理和保护
1. 定期备份:每天至少进行一次元数据备份
2. 多副本存储:使用高可用架构,确保元数据多副本
3. 监控告警:实时监控NameNode状态和元数据健康
4. 磁盘管理:确保元数据存储磁盘有足够空间
5. 安全操作:规范操作流程,避免误操作
6. 定期检查:使用fsck工具定期检查文件系统完整性
7. 灾备方案:建立跨机房灾备机制
8. 文档化:建立详细的元数据管理和恢复文档
风哥提示:NameNode元数据是HDFS的核心,需要特别重视其管理和保护
5.2 常见问题与解决方案
# 常见NameNode元数据问题与解决方案
1. 元数据损坏:从备份恢复或使用FSImage和EditLog恢复
2. 磁盘空间不足:清理磁盘空间,扩展存储
3. 主备同步失败:检查网络连接,修复JournalNode
4. 启动失败:检查配置文件,修复权限问题
5. 性能下降:优化NameNode内存配置,定期合并EditLog
6. 脑裂问题:配置QuorumJournalManager,确保一致性
7. 版本兼容性:确保组件版本兼容
8. 硬件故障:更换故障硬件,从备份恢复
from bigdata视频:www.itpux.com
1. 元数据损坏:从备份恢复或使用FSImage和EditLog恢复
2. 磁盘空间不足:清理磁盘空间,扩展存储
3. 主备同步失败:检查网络连接,修复JournalNode
4. 启动失败:检查配置文件,修复权限问题
5. 性能下降:优化NameNode内存配置,定期合并EditLog
6. 脑裂问题:配置QuorumJournalManager,确保一致性
7. 版本兼容性:确保组件版本兼容
8. 硬件故障:更换故障硬件,从备份恢复
from bigdata视频:www.itpux.com
5.3 应急响应流程
# NameNode元数据故障应急响应流程
1. 故障发现:通过监控系统或用户反馈发现故障
2. 故障诊断:查看日志,定位故障原因
3. 故障隔离:停止相关服务,防止故障扩大
4. 恢复准备:准备备份数据,制定恢复方案
5. 执行恢复:按照预定方案进行元数据恢复
6. 验证恢复:检查集群状态,确认恢复成功
7. 业务恢复:恢复业务数据处理
8. 故障复盘:分析故障原因,提出改进措施
学习交流加群风哥QQ113257174
1. 故障发现:通过监控系统或用户反馈发现故障
2. 故障诊断:查看日志,定位故障原因
3. 故障隔离:停止相关服务,防止故障扩大
4. 恢复准备:准备备份数据,制定恢复方案
5. 执行恢复:按照预定方案进行元数据恢复
6. 验证恢复:检查集群状态,确认恢复成功
7. 业务恢复:恢复业务数据处理
8. 故障复盘:分析故障原因,提出改进措施
学习交流加群风哥QQ113257174
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
