CDH服务器存储空间清理

CDH服务器存储空间清理 #

一、背景 #

单机CDH安装大数据服务,硬盘300G

生产环境由于一台机器的硬盘只有300G,在视图库服务运行一段时间之后就遇到硬盘写满的情况,但是后面去清理数据,HBase的数据也清空了,Kafka里面的缓存也清空了,dfs还占用100多G,这里用来记录一下用hadoop命令清理存储空间的过程

二、查看机器存储容量 #

[root@cm ansible]# df -h
Filesystem               Size  Used Avail Use% Mounted on
overlay                  284G  210G   75G  74% /
tmpfs                     64M     0   64M   0% /dev
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/mapper/centos-root  284G  210G   75G  74% /data
shm                       64M     0   64M   0% /dev/shm
tmpfs                    7.8G   17M  7.8G   1% /run
cm_processes             7.8G  8.8M  7.8G   1% /run/cloudera-scm-agent/process

最后查到dfs占用大部分空间

[root@20-3-13-47 pqcdh]# du -sh dfs 
118G	dfs

三、Hadoop清理操作 #

进入容器 docker exec -it xxxx bash,再进行后续的相关命令操作

功能 命令 备注
查看文件列表 hadoop fs -ls /
查看大小 hadoop fs -du -h /user/spark/applicationHistory 查看文件夹所占空间
删除文件 hdfs dfs -rm -skipTrash 删除HDFS数据的话,后期就无需清空HDFS回收站
清空回收站 hdfs dfs -expunge 注:执行完命令后,回收站的数据不会立即被清理,而是先打了一个checkpoint。显示的是一分钟后清除。

四、找到原因 #

因为之前查原因的时候HBase的数据也清空了,Kafka里面的缓存也清空了,该看的地方都看了,DFS目录还是占用很大的空间,最后搜索资料查到了Spark

Spark任务写入占用大量空间 #

如果通过spark任务写入大量数据到大数据平台,那么spark任务历史记录会占很大空间,因此需要我们定期清理

  • 清除掉 /user/spark/applicationHistory/*路径下的文件
  • 清掉spark任务执行历史记录后再把回收站清理一下
[root@cm ansible]# hadoop fs -du -h /user/spark/applicationHistory
509.0 M  1.5 G    /user/spark/applicationHistory/local-1725356770159.inprogress
3.3 G    10.0 G   /user/spark/applicationHistory/local-1725502845096.inprogress
1.0 G    3.1 G    /user/spark/applicationHistory/local-1726044005615.inprogress
125.4 K  376.3 K  /user/spark/applicationHistory/local-1726208818784.inprogress
67.7 G   203.1 G  /user/spark/applicationHistory/local-1728645735215.inprogress

清除了spark任务记录之后,spark的日志文件也占用了很大的存储

[root@cm ansible]# hadoop fs -du -h /user/spark
0       0        /user/spark/applicationHistory
43.6 G  130.8 G  /user/spark/driverLogs

这里我们需要把数据都清理掉

hadoop dfs -rm -skipTrash /user/spark/applicationHistory/*
hadoop dfs -rm -skipTrash /user/spark/driverLogs/*

清除之后,机器的存储总算释放出来了

[root@cm ansible]# df -h
Filesystem               Size  Used Avail Use% Mounted on
overlay                  284G   93G  192G  33% /
tmpfs                     64M     0   64M   0% /dev
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/mapper/centos-root  284G   93G  192G  33% /data
shm                       64M     0   64M   0% /dev/shm
tmpfs                    7.8G   17M  7.8G   1% /run
cm_processes             7.8G  9.3M  7.8G   1% /run/cloudera-scm-agent/process

五、遇到的问题 #

root用户登录没办法进行数据的删除,会报错误`Access denied for user root. Superuser privilege is required`

clouder manager 在web上操作流程: 增加角色:HDFS->配置->检查HDFS 权限dfs.permissions这项不要打勾->保存更改->重启hdfs 之后就可以用root用户