记一次HDFS空间清理:Non DFS Used
文章中记录了问题发现和解决的过程,单纯为了解决问题的伙伴请到最后一段。
目录
发现问题
什么是Non DFS Used
解决
发现问题
入职到公司后,维护集群时有一项日常不是很频繁的任务就是清理集群数据。我们公司的Hadoop(CDH 5.x)集群大概不到50台的样子,总DN容量在450T左右。这个数据量对于大的互联网公司可能不算什么,但我之前一直也没遇到过如此多的数据,百T级别的容量都要清理空间,感觉公司的数据量实在是庞大。
但随着入职时间的增加,在进行日常运维的时候发现了一些不太合乎逻辑的问题。比如我们看到的告警信息如下
机器的总容量是7.8T,已经使用的空间是4T,但空间部分居然是黄色的告警标识。进入该DN后发现了问题
告警中提示可用空间只有1T了。以我二十多年10以内加减法的经验,这里肯定有什么环节出了问题。于是登录这台机器,通过Linux,命令查看实际情况。
[root@hostname ~]# df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/sde 1.1T 658G 388G 63% /u04
/dev/sdc 1.1T 647G 398G 62% /u02
/dev/sdb 1.1T 658G 387G 63% /u01
/dev/sda 1.1T 649G 396G 63% /data
/dev/sdd 1.1T 658G 387G 63% /u03
/dev/sdg 2.2T 553G 1.7T 25% /u05
为了能看得更清楚,我把其他非数据磁盘的信息删除掉了。这台机器有6块盘,最后一块2.2T的是因为一直报空间不足扩容添加的。从这些信息来看
已用空间 = 658 + 647 + 658 + 649 + 658 + 553 = 3823 G ≈ 4T
总空间= 1.1 * 5 + 2.2 = 7.7 T
linux查看的信息同第一张图片CDH机器信息中截图的数据基本是吻合的。我们所剩的空间应该还剩下3.7T左右,但集群的告警也不应该是无故出来的,剩下的2.7T去哪了呢。只能去查看DataNode的信息
到一台机器上执行hdfs dfsadmin -report可以列举出所有的DataNode的信息。这台机器的报告信息如下,同样去掉了一些无用数据
Name: IP:50010 (机器名)
Hostname: 机器名
Configured Capacity: 8241232003072 (7.50 TB)
DFS Used: 4066627752645 (3.70 TB)
Non DFS Used: 3020135345763 (2.75 TB)
DFS Remaining: 1154468904664 (1.05 TB)
可以看到,这个Non DFS Used的空间跟我们丢掉的空间是基本吻合的。那这个Non DFS Used是什么呢?
什么是Non DFS Used
从名字上来看,应该是"不是HDFS使用的空间",我们知道HDFS是建立在服务器文件系统之上的虚拟文件系统,也就是说服务器的磁盘HDFS可以使用,那其他程序同样可以使用。我们在HDFS中设置了数据盘是/u01 ~ /u05, 那这五块盘中其他程序存储文件所占用的空间应该就是Non DFS Used。
后边的地址详细的讲解了什么是Non DFS Used,感兴趣的同学可以阅读。什么是Non DFS Used
值得一提的是,文章中指出的Non DFS Used 公式中
Non DFS used = ( Total Disk Space - Reserved Space) - Remaining Space - DFS Used
这里的Reserved Space指的是配置项(dfs.datanode.du.reserved)所配置的内容,是HDFS自己预留的,一般为30G,这30G是不算在Non DFS Used中的。但应用程序在HDFS数据盘预留的空间都要归类到Non DFS Used的空间中。(此处为个人粗浅理解)
我们公司集群设置的是10G,截图如下
排除是该值设置过大。
言归正传,集群的这个告警会是其他应用程序占用数据磁盘导致的吗?经过我实际查看,数据磁盘上除了HDFS的文件,并没有其他内容。
所以导致Non DFS Used 过高的还另有原因。
解决
经过我坚持不懈的努(bai)力(du),终于发现了这么一篇文章Reserved RBW space is not released if client terminates while writing block
文章的大概内容是: 在客户端向HDFS写入数据时,首先要将自己需要的空间保留住,防止自己写着写着空间不足了。这些被保留的空间会随着数据的写入慢慢释放掉。但是,如果在写入的过程中,写入程序被中断了,那这些被保留的空间只能等到DN被重启后才会释放。
我们集群每天在跑的azkaban任务有几千个,每天都会有任务因为各种原因失败重跑或者直接kill。我觉得上边这个应该就是Non DFS Used过高的根本原因了。So~ 挑一台机器重启试试,测试结果是Non DFS Used从2.7T+变成了300G+,重启有效。
PS : 重启后要等一段时间再执行report命令查看。让子弹飞一会。
因为告警的机器还是挺多的,所以选择滚动重启。那最终我会为集群释放多少空间出来呢?
[hdfs@hostname ~]$ hdfs dfsadmin -report > hdfs_report
[hdfs@hostname ~]$ cat hdfs_report | grep Non | awk 'BEGIN{sum=0}{sum+=$4}END{print sum}'
92336932414662
大概是90T,按照京东上磁盘的价钱,这一波为公司省下了14w+。
记一次HDFS空间清理:Non DFS Used相关推荐
- oracle测试环境表空间清理
测试场景下,使用的oralce遇到表空间的占用超大,可以采用如下的方式进行空间的清理 首先使用sqlplus连接数据库 sqlplus sys/password@orcl as sysdba 之类进行 ...
- 计算机管理器磁盘清理,修复win7提示“windows磁盘空间清理管理器已停止工作”的方法...
在长期的使用电脑之后,我们运行的程序会给电脑制造很多的垃圾文件,这些文件有的可以使用第三方工具进行清理,有的只能使用系统自带的磁盘清理器进行删除.在win7中运行磁盘清理器时会遇到系统弹出" ...
- LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间
LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间 把LOB字段的SEGMENT 存放在指定表空间.清理CLOB字段及压缩CLOB空间 1.创建LOB字段存放表空间: create ta ...
- Win10文件夹大小分析、磁盘空间清理工具
Win10文件夹大小分析.磁盘空间清理工具 1.SpaceSniffer 特点:图表界面 2.TreeSize 特点:浏览器界面
- 计算机管理器磁盘清理,Win10提示windows磁盘空间清理管理器已停止工作
一般情况下,win10系统用户都可以通过点击磁盘右键"属性"的"磁盘清理",来清理系统中的垃圾文件.不过,近来一位用户反馈自己在操作过程中,却遇到提示" ...
- MacBook磁盘内存空间清理软件CleanMyMac2023
Mac电脑用的时间久了,Mac用户尤其是MacBook用户会经常收到"磁盘几乎已满"的提示,如何解决这个问题,当我们使用苹果MAC一段时间后,就会有大量的垃圾文件占用磁盘空间,例如 ...
- oracle system和sysaux表空间清理和回收
oracle system和sysaux表空间清理和回收 前几天和一个网友讨论了下SYSAUX表空间使用率过高的问题,今天有时间整理一下,正好我们的测试数据库也存在这个问题.本案例数据库版本为11 ...
- Docker下/var/lib/docker/overlay2空间清理办法
Docker下/var/lib/docker/overlay2空间清理办法 1. 查看磁盘占用 df -h 2. Docker 的内置 CLI 指令docker system df 可 ...
- 那记悲伤的伤感空间日志:坏男人只会有可怜的女人
那记悲伤的伤感空间日志:坏男人只会有可怜的女人 - 那记悲伤的伤感空间日志:坏男人只会有可怜的女人 单身,很多时候不是贵族, 相反,这样说也许只是一种自我安慰. 单身也许会比较自由, 但自由也有一 ...
最新文章
- c语言程序设计江宝钏实验六答案,《C语言程序设计》(江宝钏著)实验三答案.doc...
- 独家 | 提速20倍!3个细节优化Tableau工作簿加载过程(附实例)
- 浅谈android的事件分发机制
- 自学python爬虫要多久-Python爬虫要学多久,给初学编程者的建议
- React的核心概念
- 云炬随笔20210731(2)
- permutations python_为什么Python的itertools.permutations包含重复项? (当原始列表重复时)...
- vs2017调用linux脚本,[代码] ShellExecute调用外部程序_VS2017
- C# DataTable 用法简介
- MFC定时器SetTimer函数用法总结
- 企业微信文件会过期吗?
- matlab 彩色转为黑白,彩色图转为灰度图和黑白图方法
- freemarker 导出word文件中包含图片
- acer加固态硬盘,hdd放到光驱位,BIOS没有设置固态硬盘启动选项
- 【电脑使用】美化你的Windows
- 一沓扑克牌中剔除等于13或者相邻之和等于13的扑克牌,剩余多少
- 【MEMS】【1】微机电系统与比例尺度定律(尺寸效应)
- typora下载与教程
- tensorflow+imageai环境搭建到图像预测和图像侦测
- 开发Unity3D空战类插件 战机游戏模板Pro版本
热门文章
- 实用的60个CSS代码片段
- 职业高中学计算机高考后能报什么,「新高考」新高考选哪些科目可以报计算机专业?高中生如何提分?...
- Java工程师美团面试题
- java名片合成_HTML5 canvas绘图基础(电子名片生成器源码)
- vnc viewer是什么,vnc viewer是什么,怎么用
- Java使用javax.mail.jar发送邮件并允许发送附件
- Unity游戏打包以后无法获取配置文件信息
- 测试开发需要掌握哪些技能?
- 复工复产,利用Python爬虫爬取火车票信息
- oracle同步软件技术实现对比