在不开启回收站的情况下恢复Hadoop误删除文件

这个问题其实比较严重,提前说一下结论,能恢复的只有执行删除后未删除的数据,已经删除的数据无法恢复。
什么叫执行删除后未删除的数据呢,因为hadoop执行删除时是在edits文件中添加一个标记,然后慢慢删除,这其中有个过程,假如你只删除一个文件,那我估计这种方式是无法恢复的,这个办法只能恢复标记删除而未删除的记录。

停止Hadoop集群

停止集群这一步的时间,决定了你能恢复数据的多少,假如停止过慢,Hadoop已经删除完毕,那么不可恢复,不用看下去了,假如你停止的及时,那你还有机会,继续向下看

修改edits

修改这个目录下的edits文件

dfs.namenode.shared.edits.dir#这个参数配置了启用edits目录机器
然后查找journal的目录所在位置
/app/data1/hadoop/journal/node/local/data/iptvcluster/current/

在这里插入图片描述
我的如图所示,由于我在测试过程中关闭的及时,所以我的日志在edits_inprogress_0000000000183143068这个文件中
然后,执行指令将文件转为XML

hdfs oev -i edits_inprogress_0000000000183139685 -o edits_inprogress_0000000000183139685.xml

在这里插入图片描述

然后在文件中搜索被误删除的文件或者文件夹,将

<PATH>/spark/historyserverforSpark/application_1554216958673_5470.inprogress</PATH>改为不存在目录

再然后

hdfs oev -p binary -i edits_inprogress_0000000000183139685.xml -o edits_inprogress_0000000000183139685 binary

将修改过的文件转回edits文件,并且拷贝到dfs.namenode.shared.edits.dir下所有节点,保证文件一致

查询fsimage中是否还保留元数据

进入dfs.namenode.name.dir配置的目录,然后通过如下指令打开元数据信息查询Api

在这里插入图片描述

hdfs oiv -i fsimage_0000000000183129308 -addr 127.0.0.1:5978

然后通过

hdfs dfs -ls webhdfs:/127.0.0.1:5978/datawarehouse/

查看元数据是否还在,若还在即可启动,若不在只能考虑回退了,这个暂时只能看有没有副本了,我这里还在,就讲解不了了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值