zoukankan      html  css  js  c++  java
  • 【转载】惊天大悲剧-Hadoop的rmr和trash

    转自:http://java-doom.iteye.com/blog/1898000

    这两天在操作Hadoop集群时,由于一个误操作,制作了一个天大的悲剧

    不小心把Hadoop集群上的所有文件全部删除了,具体情况是这样的:

    我用hadoop的超级帐户要建立一个目录,结果发现位置错了

    也是,想使用rmr删掉那个目录,可是不小心把命令写成了

    hadoop fs -rmr /user

    于是,悲剧出现了,所有user目录下的所有目录和文件全都没有了

    当时我就慌神了,赶紧从web查看50070的服务

    眼看着DFS Used空间从100多G不停的减少

    后来才反应过来,赶紧停掉namenode节点,然后上网google办法

    后来,从secondname节点重新恢复了一个checkpoint

    但绝大部分数据都已经丢失了,只恢复了一小部分数据,已经没啥用了

    幸好,原始log我们在其它服务器上还保留的有,只能重新分析再入Hadoop了

    总结了一下几点教训:

    1. 首先一定要控制好hadoop上各用户的权限,使各user只能操作自己的目录
    2. 尽量少用hadoop的超级用户进行操作,可以减少误操作
    3. hadoop的rm和rmr命令,设计的太BT了,连一个确认提示都没有,直接就删除了。看到有人给官方提了这个建议,但人家回复说:已经有了trash机制了,所以不需要提示,真是无语….
    4. hadoop的trash功能:很遗憾,之前没有配置trash,所以就直接给删除了,经过这次误操作,赶紧配置上trash,并设置保留时间为7天。

    在core-site.xml中增加如下配置,表明rm后会在trash中保留多少分钟:

    <property>
      <name>fs.trash.interval</name>
      <value>10080</value>
      <description>
          Number of minutes between trash checkpoints. If zero, the trash feature is disabled
      </description>
    </property>

    很遗憾的是,hadoop的这个默认值是0,就是直接删除了,为什么要这么设计呢?郁闷….

    经过简单的测试,这个trash功能还是不错的,当rm后,它会move到当前文件夹下的.Trash目录下

    如果你删除一个文件或目录多次,则hadoop会自动在name后加上数字序列号

    这样,如果你误删除后,就可以有选择的恢复文件了

    hadoop fs -mkdir /user/oplog/test
    hadoop fs -put *.txt /user/oplog/test
    hadoop fs -rmr /user/oplog/test
    hadoop fs -ls /user/oplog/.Trash/Current/user/oplog
        drwxr-xr-x   – oplog oplog          0 2010-11-16 10:44 /user/oplog/.Trash/Current/user/oplog/test
    hadoop fs -mv /user/oplog/.Trash/Current/user/oplog/test /user/oplog/
    hadoop fs -ls /user/oplog/.Trash/Current/user/oplog
        drwxr-xr-x   – oplog oplog          0 2010-11-16 10:44 /user/oplog/.Trash/Current/user/oplog/test
        drwxr-xr-x   – oplog 

     
  • 相关阅读:
    我的家庭保险方案推荐
    如何修改Total Commander配件文件的位置
    豆瓣统计-2015
    RESTful API接口设计规范
    正则表达式中 的$1,$2与实际应用
    查询排序:order by case when理解、在order By子句中使用case语句的理解
    架构设计:BFF和Serverless简介
    移动端1px细线解决方案总结
    SpringMVC中实体类属性is开头的字段返回JSON时自动去掉is开头的问题
    详解JS面向对象的三大特征之多态
  • 原文地址:https://www.cnblogs.com/ddddemo/p/5653235.html
Copyright © 2011-2022 走看看