dos2unix命令找不到_05295.15.0这次玩儿大了,找不回了

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github:

https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

前两天客户问了一个问题,HDFS上删除的数据还能不能恢复?碰到这个问题第一反应“在执行命令的这个用户下垃圾回收站找到恢复不就的了?”,用户删除数据发现操作失误的时间并不长也没有超过垃圾回收站的清空时间,但是无论怎么找也找不到被删除的数据,这次真的玩儿大了。。。

经沟通发现用户是在MapReduce作业里面调用了HDFS的API进行删除操作,那这个删除与我们命令行使用hadoop fs -rmr删除有什么区别?

  • 内容概述

1.源码分析

2.总结

  • 测试环境

1.CM和CDH版本为5.15.0

2

API与命令行操作验证

Fayson在本地进行测试,通过调用HDFS的API接口进行delete操作,删除的文件或目录确实在HDFS上无法找回。

1.确认HDFS的Trash清理时间

d0c066a3b5e0946c2bfaaedca9f05d1a.png

2.测试目录/tmp/kafka-data

553d9ad7a6bbbbcd92f7d57c78ad70af.png

3.查看Fayson用户下.Trash内容

40df9495a4b9779e084ab905eef402b8.png

当前用户的垃圾回收站没有任何内容

4.通过HDFS的API接口调用delete删除目录

201ead523df6e83c6a2a68bf734e7cd4.png

执行删除操作,删除/tmp/ kafka-data目录

6a7a70e7b81d8bae817e7b69913650e0.png

5.删除成功后在fayson用户的回收站下查看是否能找到删除的目录

35887a9eb2fb8328fb581645b2f57141.png

无论是在操作用户的回收站还是所有用户目录下均找不到被删除的kafka-data目录。

6.接下来再使用命令行进行操作,先将数据目录put到/tmp目录下

5d45ea37ad4c81647a987ecb039ec4e9.png

在命令行执行删除操作

71408a7f30ae6cc2b32d8cce419d3bd4.png

可以看到命令行操作,提示将/tmp/kafka-data目录move到了操作用户的.Trash/Current/tmp/kafka-data目录下,因此可以在fayson用户的垃圾回收站找到被删除的数据。

3

源码分析

于是Fayson又查看了下HDFS的源码找到了命令行操作与直接调用HDFS API的区别,如下是两种操作方式区别:

1.命令行调用删除操作是通过hadoop-common工程下org.apache.hadoop.fs.shell.Delete类实现,在该类中有如下代码段

7d621ce54fd22cb2a4255959e69bb905.png

未指定skipTrash,调用Trash.moveToAppropriateTrash方法,该方法最终调用org.apache.hadoop.fs.TrashPolicyDefault.moveTrash方法

8009f29dd8bab4805ea25fd20af0124b.png

最终也就看到了命令行删除操作打印的日志“Moved:…”

2.通过HDFS API接口的话,直接调用的是org.apache.hadoop.fs.FileSytem类的delete方法。

通过上述代码分析可以看到,在命令行只有指定skipTrash才会直接调用FileSystem的delete方法,因此在代码中直接调用HDFS API是会直接跳过回收站将指定的文件或目录删除,以至于我们在回收站是找不到被删除的文件或目录。

4

总结

删除数据需谨慎!!!

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

1ccc8faa5903552b7097a729b2eaff95.gif

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值