如何通过Hortonworks HDP SSH客户端释放Non DFS Used空间?
解决HDP Sandbox中Non DFS Used占用过高的磁盘空间问题
Hey there! 完全可以通过Sandbox HDP的SSH客户端操作释放空间,你已经找对了方向——hdfs dfs -du -h /只能看到HDFS管控的数据,而Non DFS Used是磁盘上不属于HDFS管理的文件(比如系统日志、临时文件、其他服务的本地缓存等),咱们从这部分入手清理就行,一步步来:
1. 定位HDFS DataNode的存储目录
首先得明确DataNode的存储路径,这样能精准找到Non DFS对应的磁盘分区。在SSH里执行:
hdfs getconf -confKey dfs.datanode.data.dir
你会得到类似/hadoop/hdfs/data的路径,接着用下面的命令查看该路径所在磁盘的整体使用情况:
df -h
找到对应路径挂载的磁盘分区(比如可能是/dev/sda1挂载到/),确认当前的磁盘占用状态。
2. 排查Non DFS占用的具体内容
进入DataNode存储目录的上级目录,查看各文件夹的大小分布:
cd /hadoop/hdfs du -h --max-depth=1
这里面data/current是HDFS的块数据(属于DFS Used),其他文件夹比如logs、tmp,以及系统级的日志、临时目录都是Non DFS Used的重灾区,比如:
- Hadoop组件日志:
/var/log/hadoop-hdfs/、/var/log/yarn/ - 系统临时文件:
/tmp/ - YARN本地缓存:可以用
yarn getconf -confKey yarn.nodemanager.local-dirs获取路径
3. 具体清理操作
清理旧日志文件
日志是Non DFS Used的常见大户,你可以删除旧的日志归档文件,或者清空当前日志:
# 清空DataNode当前日志 sudo truncate -s 0 /var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log # 删除YARN NodeManager的旧日志归档 sudo rm -rf /var/log/yarn/yarn-nodemanager-*.log.*
清理系统临时文件
/tmp目录下的过期临时文件可以放心清理:
sudo rm -rf /tmp/*
清理YARN本地缓存
YARN的本地目录会残留旧的容器数据,清理后能释放不少空间:
# 获取YARN本地目录路径 YARN_LOCAL_DIR=$(yarn getconf -confKey yarn.nodemanager.local-dirs) # 清理用户缓存和容器日志 sudo rm -rf ${YARN_LOCAL_DIR}/usercache/* sudo rm -rf ${YARN_LOCAL_DIR}/containerlogs/*
4. 验证清理效果
清理完成后,执行以下命令查看HDFS磁盘使用情况,确认Non DFS Used是否下降:
hdfs dfsadmin -report
你会看到Non DFS Used: X GB的数值,应该比之前小很多。
注意事项
- 清理前最好先查看文件的修改时间,确认是旧文件再删除,避免误删正在使用的文件。
- 清理YARN缓存后,建议重启YARN NodeManager服务:
sudo systemctl restart yarn-nodemanager - 如果是VirtualBox动态分配的磁盘,清理后可以在宿主机的VirtualBox界面里对虚拟机磁盘进行压缩,进一步节省空间(这一步不在SSH操作范围内)
内容的提问来源于stack exchange,提问作者samba
相关产品推荐
相关产品推荐

