文章中记录了问题发现和解决的过程,单纯为了解决问题的伙伴请到最后一段。

目录

发现问题

什么是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相关推荐

  1. oracle测试环境表空间清理

    测试场景下,使用的oralce遇到表空间的占用超大,可以采用如下的方式进行空间的清理 首先使用sqlplus连接数据库 sqlplus sys/password@orcl as sysdba 之类进行 ...

  2. 计算机管理器磁盘清理,修复win7提示“windows磁盘空间清理管理器已停止工作”的方法...

    在长期的使用电脑之后,我们运行的程序会给电脑制造很多的垃圾文件,这些文件有的可以使用第三方工具进行清理,有的只能使用系统自带的磁盘清理器进行删除.在win7中运行磁盘清理器时会遇到系统弹出" ...

  3. LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间

    LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间  把LOB字段的SEGMENT 存放在指定表空间.清理CLOB字段及压缩CLOB空间 1.创建LOB字段存放表空间: create ta ...

  4. Win10文件夹大小分析、磁盘空间清理工具

    Win10文件夹大小分析.磁盘空间清理工具 1.SpaceSniffer 特点:图表界面 2.TreeSize 特点:浏览器界面

  5. 计算机管理器磁盘清理,Win10提示windows磁盘空间清理管理器已停止工作

    一般情况下,win10系统用户都可以通过点击磁盘右键"属性"的"磁盘清理",来清理系统中的垃圾文件.不过,近来一位用户反馈自己在操作过程中,却遇到提示" ...

  6. MacBook磁盘内存空间清理软件CleanMyMac2023

    Mac电脑用的时间久了,Mac用户尤其是MacBook用户会经常收到"磁盘几乎已满"的提示,如何解决这个问题,当我们使用苹果MAC一段时间后,就会有大量的垃圾文件占用磁盘空间,例如 ...

  7. oracle system和sysaux表空间清理和回收

    oracle system和sysaux表空间清理和回收   前几天和一个网友讨论了下SYSAUX表空间使用率过高的问题,今天有时间整理一下,正好我们的测试数据库也存在这个问题.本案例数据库版本为11 ...

  8. Docker下/var/lib/docker/overlay2空间清理办法

    Docker下/var/lib/docker/overlay2空间清理办法 1. 查看磁盘占用     df -h 2. Docker 的内置 CLI 指令docker system df     可 ...

  9. 那记悲伤的伤感空间日志:坏男人只会有可怜的女人

    那记悲伤的伤感空间日志:坏男人只会有可怜的女人 - 那记悲伤的伤感空间日志:坏男人只会有可怜的女人 单身,很多时候不是贵族, 相反,这样说也许只是一种自我安慰.   单身也许会比较自由, 但自由也有一 ...

最新文章

  1. c语言程序设计江宝钏实验六答案,《C语言程序设计》(江宝钏著)实验三答案.doc...
  2. 独家 | 提速20倍!3个细节优化Tableau工作簿加载过程(附实例)
  3. 浅谈android的事件分发机制
  4. 自学python爬虫要多久-Python爬虫要学多久,给初学编程者的建议
  5. React的核心概念
  6. 云炬随笔20210731(2)
  7. permutations python_为什么Python的itertools.permutations包含重复项? (当原始列表重复时)...
  8. vs2017调用linux脚本,[代码] ShellExecute调用外部程序_VS2017
  9. C# DataTable 用法简介
  10. MFC定时器SetTimer函数用法总结
  11. 企业微信文件会过期吗?
  12. matlab 彩色转为黑白,彩色图转为灰度图和黑白图方法
  13. freemarker 导出word文件中包含图片
  14. acer加固态硬盘,hdd放到光驱位,BIOS没有设置固态硬盘启动选项
  15. 【电脑使用】美化你的Windows
  16. 一沓扑克牌中剔除等于13或者相邻之和等于13的扑克牌,剩余多少
  17. 【MEMS】【1】微机电系统与比例尺度定律(尺寸效应)
  18. typora下载与教程
  19. tensorflow+imageai环境搭建到图像预测和图像侦测
  20. 开发Unity3D空战类插件 战机游戏模板Pro版本

热门文章

  1. 实用的60个CSS代码片段
  2. 职业高中学计算机高考后能报什么,「新高考」新高考选哪些科目可以报计算机专业?高中生如何提分?...
  3. Java工程师美团面试题
  4. java名片合成_HTML5 canvas绘图基础(电子名片生成器源码)
  5. vnc viewer是什么,vnc viewer是什么,怎么用
  6. Java使用javax.mail.jar发送邮件并允许发送附件
  7. Unity游戏打包以后无法获取配置文件信息
  8. 测试开发需要掌握哪些技能?
  9. 复工复产,利用Python爬虫爬取火车票信息
  10. oracle同步软件技术实现对比