温馨提示×

linux hdfs为何占用高

小樊
52
2026-10-16 06:39:32
栏目: 智能运维

在 Linux 上 HDFS(Hadoop 分布式文件系统)占用高,通常指 磁盘占用高、CPU 占用高或内存占用高。下面按常见原因分类说明,并给出排查与解决思路。


一、磁盘占用高(最常见)

1. 数据块冗余(副本数过大)

  • 默认副本数 dfs.replication=3
  • 小文件极多时,元数据 + 块占用大

排查

hdfs dfs -du -h /
hdfs dfsadmin -report

解决

  • 降低副本数(非重要数据):
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
  • 合并小文件(HAR / Hive / Spark)

2. 回收站未清理

HDFS 有回收站(Trash)

排查

hdfs dfs -ls /user/*/.Trash

解决

hdfs dfs -expunge

或修改:

<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
</property>

3. 日志文件过多

  • NameNode / DataNode 日志
  • YARN / MapReduce 日志

排查

du -sh /var/log/hadoop/*

解决

  • 配置日志轮转
  • 定期清理旧日志

4. 临时文件未释放

  • /tmp
  • Hive / Spark 中间数据
du -sh /tmp/*

二、内存占用高

1. NameNode 内存不足

  • 文件 / 块数量巨大
  • 默认堆内存不足

现象

  • NameNode Full GC 频繁
  • Web UI 卡顿

解决

export HADOOP_NAMENODE_OPTS="-Xmx8g"

2. DataNode 缓存过多

  • 短路读缓存
  • OS page cache

正常现象

free -h

Linux 会主动使用内存做 cache,不算异常。


三、CPU 占用高

1. 频繁 Balancer

hdfs balancer

解决

  • 降低带宽
<property>
  <name>dfs.datanode.balance.bandwidthPerSec</name>
  <value>1048576</value>
</property>

2. 大量小文件访问

  • NameNode RPC 压力大

解决

  • 合并文件
  • 增加 NameNode 处理能力

四、inode 占用高(容易忽略)

Linux 文件系统 inode 满,也会“磁盘满了”

df -i

原因

  • 海量小文件

五、快速排查命令汇总

# HDFS 总体情况
hdfs dfsadmin -report

# 目录大小
hdfs dfs -du -h /

# Linux 磁盘
df -h
df -i

# 进程资源
top

六、总结一句话

HDFS 占用高,90% 是因为小文件多 + 副本数高 + 回收站/日志未清理。

如果你能提供:

  • 是 磁盘 / CPU / 内存 高
  • 单节点还是整个集群
  • hdfs dfsadmin -report 输出

我可以帮你精确分析。

0 踩