hadoop 数据自动清理

网友投稿 351 2022-11-21

hadoop 数据自动清理

任务背景

这项工作初期是为了解决 由于语音数据增长过快, 用户组的hdfs经常性因为空间不足导致任务挂掉的问题

整体思路

新增/workdir/group/tgroup 目录,并给所有用户在此目录下建立个人用户目录通过crontab每天凌晨2点自动执行自动清理的脚本脚本流程

将对应目录中创建时间超过60天的文件找到并记录到文件中删除上一步找到的文件列表

后续优化自动清理过程中发现,一旦要删除的文件数超过一定数量后,hdfs -rmr操作会卡住,导致实际并没有删除,日积月累下用户hdfs配额依然超了,影响用户任务

具体详情

代码内容

#!/bin/bashsource ~/.bashrc#hdfs check dir 这儿写具体要清理的目录data1_file=xxxdata2_file=yyyarray_check=($data1_file $data2_file)#current time today_timestamp=$(date -d "$(date + "%Y-%m-%d %H:%M")" + %s)# func get 60 days ago dataremove() { /home/hadoop/hadoop2/bin/hadoop dfs -ls -R $1 > /home/hadoop/check/$name.list /bin/cat /home/hadoop/check/$name.list | while read quanxian temp user group size day hour filepath do current_file_time="$day $hour" current_file_timestamp=$(date -d "$current_file_times" + %s) if [ $(($today_timestamp-$current_file_timestamp)) -ge $((60*24*60*60)) ];then echo "$quanxian $temp $user $group $size $day $hour $filepath" fi done}#func deleteexecute(){ echo -e "\n\n" echo "$(date + '%Y-%m-%d %H:%M:%S') start to remove outdate file in hdfs" echo "$(date + '%Y-%m-%d %H:%M:%S') today is : $(date + '%Y-%m-%d %H:%M:%S')" # date date1=$(date + '%Y-%m-%d %H:%M:%S') # which time now date2=$(date +%F) # what day is today # start deal with workdir in array_check for i in ${array_check[@]} do echo $i echo "$(date + '%Y-%m-%d %H:%M:%S') processing filepath : $i" name=`echo "$i" | awk -F '/' '{print $4}'` echo $name remove $i |grep -v ^d > /home/hadoop/check/2month.detail-$name-$date1 # mkdir dir and split 10000 files mkdir /home/hadoop/check/splitefile/$date2 cd /home/hadoop/check/splitefile/$date2 split -l 10000 /home/hadoop/check/2month.detail-$name-$date1 -d -a 4 "$name"_file_ # start deal with every in splitfile for file in `ls /home/hadoop/check/splitefile/$date2/"$name"_file_*` do /bin/cat $file | awk '{print $8}' | tr '\n' ' ' > $file".list" /home/hadoop/hadoop2/bin/hadoop dfs -rmr `cat $file".list"` done done}# startexecute

当前现状

自2020年10月28日至今,已清理文件3.8PB,占用空间8.6PB

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于ADS1298与FPGA的高性能脑电信号采集系统
下一篇:CS5266 USB typec转HDMI带PD3.0拓展坞电路的介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~