HDFS常见问题
更新时间 2026-10-12 11:43:58
最近更新时间: 2026-10-12 11:43:58
本章节介绍HDFS服务常见问题。
HDFS误删数据怎么恢复
HDFS 设计时考虑了数据安全性,为了实现数据误删可恢复,提供回收站保护机制。HDFS 回收站(Trash)是 Hadoop 提供的数据保护机制,类似于操作系统的回收站。当用户执行删除操作时,文件不会立即被物理删除,而是移动到回收站目录中,在配置的时间间隔内可以恢复。
恢复步骤
1、确认删除操作执行的时间和用户
去到Active NameNode节点,通过审计日志查询删除操作的时间和用户。
grep 'cmd=delete' /var/log/hadoop/hdfs/hdfs-audit.log* | grep 'src=<被删除的目录或文件>'若删除操作的执行时间已经超过回收站数据保留时间,则数据无法恢复。
2、找到回收站中对应目录
# 如果删除操作时间已经超过回收站间隔时间,则对应目录为:
/user/<用户>/.Trash/<时间>
# 如果删除操作时间没有超过回收站间隔时间,则对应目录为:
/user/<用户>/.Trash/Current3、执行mv恢复数据
# 执行mv
hdfs dfs -mv <Trash_Dir> <Recovery_Dir>怎么调整副本数
HDFS 多副本机制是在硬件不可靠、数据珍贵且不可丢失的现实背景下,采用空间换可靠性策略,通过将同一数据冗余存储在不同节点上,实现大规模分布式存储系统的高可靠、高可用、高吞吐目标。
设计目标:
高可靠性:容忍硬件故障,数据不丢失。
高可用性:节点故障不影响服务。
高吞吐量:并行读取、数据本地性。
简单可靠:以空间换可靠性,运维简单。
存在写入放大
每个数据块写入时需复制多次。
副本修复也会引发额外数据复制。
对网络带宽和磁盘IO 造成压力。
存储成本增加
副本数× 数据量 = 总存储空间
例:10TB数据,3副本 = 30TB存储开销。
权衡:可靠性vs 存储成本
合理设置副本数,有效使用存储空间。
副本数设置
1、客户端命令设置目录或文件的副本数
# 对单个文件设置副本数
hdfs dfs -setrep <rep> <path>
例:设置/tmp/test.txt的副本数为3
hdfs dfs -setrep 3 /tmp/test.txt
# 设置一个目录下所有文件的副本数
hdfs dfs -setrep -R <rep> <path>
例:设置/tmp/test下所有文件的副本数为3
hdfs dfs -setrep -R 3 /tmp/test2、修改默认副本数配置
配置参考:
| 配置参数 | 默认值 | 描述 |
|---|---|---|
| dfs.replication | 3 | 默认数据块副本数。 在创建文件时,可以指定实际的副本数量。如果在创建时未指定副本数,则使用此默认值。 |