Shell遍历HDFS路径统计层级目录大小

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: Shell遍历HDFS路径统计层级目录大小
#!/bin/bash workdir=$(cd $(dirname $0); pwd)date=`date +%Y-%m-%d-%H:%M:%S`init(){
rm-rf$workdir/hdfs_detail.txt
touch$workdir/hdfs_detail.txt
chmod777$workdir/hdfs_detail.txt
echo"[Init Time]:$date" >> $workdir/hdfs_detail.txt
echo"--" >> $workdir/hdfs_detail.txt
echo"--" >> $workdir/hdfs_detail.txt
}
hdfs_collect(){
echo"                                        ----[ 汇总数据 ]----                                                " >> $workdir/hdfs_detail.txt
echo"" >> $workdir/hdfs_detail.txt
echo"|    总量    |   当前目录   |" >> $workdir/hdfs_detail.txt
    hadoop fs -du / |sort -r-n| awk'{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2);}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2);}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2);}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2);}}}}' >> $workdir/hdfs_detail.txt
echo"" >> $workdir/hdfs_detail.txt
echo"" >> $workdir/hdfs_detail.txt
}
hdfs_detail(){
echo"                                       ----[ 明细数据 ]----                                                " >> $workdir/hdfs_detail.txt
echo"" >> $workdir/hdfs_detail.txt
#大于1T#hdfs1=`hadoop fs -du / |awk '{if($1 >1099511627776 && $2 != "/spark2-history"){print $2}}' >> $workdir/hdfsfirst.txt`for first in`cat $workdir/hdfsfirst.txt`;
do       hadoop fs -du$first  |sort $1-r-n |awk '{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2);}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2);}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2);}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2);}}}}' >> $workdir/hdfs_detail.txt
donefor second in`cat $workdir/hdfsfirst.txt`;
do#大于80G#  hadoop fs -du $second |awk '{if($1 >85899345920){print $2}}' >> $workdir/hdfssecond.txt      hadoop fs -du$second  |sort $1-r-n |awk '{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2);}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2);}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2);}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2);}}}}' >> $workdir/hdfs_detail.txt
donefor third in`cat $workdir/hdfssecond.txt`;
do#大于50G      hadoop fs -du$third  |sort $1-r-n |awk '{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2);}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2);}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2);}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2);}}}}' >> $workdir/hdfs_detail.txt
done:<<!
for line in$hdfs1;
do            hadoop fs -du$line |sort -r-n | awk'{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2,"'$line'");}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2,"'$line'");}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2,"'$line'");}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2,"'$line'");}}}}'|head -10 >> $workdir/hdfs_detail.txt
for line1 in$hdfs2;
do          hadoop fs -du$line1 |sort -r-n | awk'{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2,"'$line1'");}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2,"'$line1'");}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2,"'$line1'");}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2,"'$line1'");}}}}'|head -10 >> $workdir/hdfs_detail.txt
for line2 in$hdfs3;
do                hadoop fs -du$line2  |sort -r-n | awk'{size=$1/1024;if(size<1024){printf("%10.3f KB\t%s\n",size,$2,"'$line2'");}else{size=size/1024;if(size<1024){printf("\033[36m%10.3f MB\t%s\n\033[0m",size,$2,"'$line2'");}else{size=size/1024;if(size<1024){printf("\033[35m%10.3f GB\t%s\n\033[0m",size,$2,"'$line2'");}else{size=size/1024;printf("\033[31m%10.3f TB\t%s\n\033[0m",size,$2,"'$line2'");}}}}'|head -10 >> $workdir/hdfs_detail.txt
donedoneecho"" >> $workdir/hdfs_detail.txt     
donerm-rf$workdir/hdfsfirst.txt
rm-rf$workdir/hdfssecond.txt
rm-rf$workdir/hdfsthird.txt
!
}
init
hdfs_collect
hdfs_detail
echo"SUCCESS"
相关文章
|
2月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 只删除空目录 mrd命令使用教程
【Shell 命令集合 磁盘管理 】Linux 只删除空目录 mrd命令使用教程
32 0
|
2月前
|
Shell Linux API
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
33 1
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】⭐⭐ Linux 显示当前shell会话中的目录栈 dirs命令使用教程
【Shell 命令集合 磁盘管理 】⭐⭐ Linux 显示当前shell会话中的目录栈 dirs命令使用教程
28 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
27 0
|
2月前
|
存储 安全 Shell
⭐⭐⭐【Shell 命令集合 磁盘管理 】Linux 显示当前工作目录的路径 pwd命令使用教程
⭐⭐⭐【Shell 命令集合 磁盘管理 】Linux 显示当前工作目录的路径 pwd命令使用教程
46 0
|
2月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 删除指定目录下的文件和子目录 mmd命令使用指南
【Shell 命令集合 磁盘管理 】Linux 删除指定目录下的文件和子目录 mmd命令使用指南
41 0
|
2月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 以树状图列出目录的内容 tree命令使用指南
【Shell 命令集合 磁盘管理 】Linux 以树状图列出目录的内容 tree命令使用指南
48 0
|
29天前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
33 5
|
2月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 删除空目录 rmdir命令使用教程
【Shell 命令集合 磁盘管理 】Linux 删除空目录 rmdir命令使用教程
27 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 创建目录 mkdir 命令使用指南
【Shell 命令集合 磁盘管理 】Linux 创建目录 mkdir 命令使用指南
34 0