Apache Hadoop 2.6数据节点死状态及DFS使用率100%问题求助
针对HDFS使用率100%但系统仍有剩余空间的排查与解决方案
我之前在维护Hadoop 2.6单机环境时也碰到过一模一样的问题,结合你的场景,咱们从几个核心配置和系统细节入手排查:
1. 检查DataNode的磁盘目录配置
Hadoop DataNode只会使用dfs.datanode.data.dir指定的磁盘路径,如果你那400GB剩余空间的磁盘没被加入这个配置,DataNode根本不会去利用它。
- 进入Hadoop配置目录(通常是
$HADOOP_HOME/etc/hadoop),打开hdfs-site.xml - 查看
<name>dfs.datanode.data.dir</name>对应的<value>,是不是只写了一个已经占满的磁盘路径? - 如果是,把剩余空间磁盘的挂载路径加进去,多个路径用逗号分隔,比如:
<property> <name>dfs.datanode.data.dir</name> <value>/hadoop/data,/mnt/extra_disk/hadoop/data</value> </property> - 修改后重启HDFS:
stop-dfs.sh && start-dfs.sh
2. 调整磁盘预留空间参数
Hadoop 2.6里的dfs.datanode.du.reserved参数是用来给系统预留磁盘空间的,如果这个值设得过大,哪怕磁盘还有剩余,DataNode也会判定磁盘已满。
- 在
hdfs-site.xml里检查这个参数,默认是0,但如果被修改成远大于实际需要的值(比如400GB以上)就会出问题 - 改成合理的预留值,比如10GB(单位是字节):
<property> <name>dfs.datanode.du.reserved</name> <value>10737418240</value> </property> - 重启DataNode生效
3. 验证磁盘挂载与权限
先确认剩余400GB的磁盘已经正确挂载,并且DataNode运行用户对该磁盘目录有读写权限:
- 用
df -h查看所有磁盘的挂载状态,找到目标磁盘的挂载点(比如/mnt/extra_disk) - 检查权限:
ls -ld /mnt/extra_disk,确保Hadoop运行用户(比如hadoop用户)有写入权限 - 如果权限不足,执行
sudo chown -R hadoop:hadoop /mnt/extra_disk,然后创建DataNode数据目录并赋予对应权限
4. 优化单机环境的副本数配置
单机环境下默认副本数是3,但你只有一个DataNode,HDFS会反复尝试创建3份副本,快速占用磁盘空间。
- 在
hdfs-site.xml里把副本数改成1:<property> <name>dfs.replication</name> <value>1</value> </property> - 重启HDFS后,新上传的文件只会存储一份,能大幅节省空间
5. 清理HDFS回收站文件
HDFS的删除操作默认会把文件移到回收站(/user/你的用户名/.Trash),这些文件依然占用DFS空间:
- 查看回收站占用大小:
hdfs dfs -du -h /user/你的用户名/.Trash - 清空回收站:
hdfs dfs -rm -r /user/你的用户名/.Trash/* - 若不需要回收站功能,可在
core-site.xml里禁用:<property> <name>fs.trash.interval</name> <value>0</value> <!-- 0表示禁用回收站 --> </property>
内容的提问来源于stack exchange,提问作者Bidyut
相关产品推荐
相关产品推荐

