zoukankan      html  css  js  c++  java
  • 使用snapshot实现hdfs文件备份和恢复实战

    通过snapshot实现 hdfs上文件的备份

    api地址请见http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.5.0-cdh5.2.0/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

    ==========================================================================================

    1、允许创建快照

    首先,在你想要进行备份的文件夹下面 执行命令,允许该文件夹创建快照

    hdfs dfsadmin -allowSnapshot <path>

    例如:hdfs dfsadmin -allowSnapshot /Workspace/linlin

    出现此命令证明已经允许创建快照成功

    =================================================================================================

    2、创建快照

    接下来就开始对此文件夹进行备份

    hdfs dfs -createSnapshot <path> [name]

    例如 hdfs dfs -createSnapshot /Workspace/linlin bak1 

    此命令出现证明已经创建快照成功

    此时我们可以考虑一下是否能够在linlin子目录创建快照

    hdfs'上目录结构如图所示

    然后尝试在snaptest上建立快照

    hdfs dfs -createSnapshot /Workspace/linlin/snaptest bak2 

    报错,可见,只能在你允许的目录下面建立快照;

    第一次快照  bak1 时候 没有snaptest文件夹,现在多了snaptest文件夹,再创建一次快照

    若还是用

    hdfs dfs -createSnapshot /Workspace/linlin  bak1

    有错误提示,快照名字已经存在

    执行  hdfs dfs -createSnapshot /Workspace/linlin  bak2

    创建成功;

    ==============================================================================================================

    3、查看快照

    查看所有的snapshottable

       hdfs lsSnapshottableDir

    查看到曾经允许创建快照的所有目录
    查看当前快照下的文件  hadoop sanpshot 创建快照时候,默认的文件夹是.snapshot 查看时候必须加上.snapshot才能看到里面备份的东西;
    .snapshot是后来hadoop才有的产物,所以之前若是有文件夹命名为snapshot关键字就不能创建快照了;
    
    
    执行命令 hdfs dfs -ls /Workspace/linlin/.snapshot/
    

    能够看到 这个快照下 有三个备份 分别是 bak1 、bak2 、 linlin

    ===========================================================================================================

    4、对比快照

    进行快照之间的对比,看到两个快照之间备份文件的区别

    执行命令  

    hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
    例如: 
    执行命令 hdfs snapshotDiff  /Workspace/linlin bak1 bak2 

    结果 Results:
    + The file/directory has been created.
    - The file/directory has been deleted.
    M The file/directory has been modified.
    R The file/directory has been renamed.
    这里出现M 代表我对linlin文件夹进行了修改,+代表新增了一个文件夹 snaptest
    ============================================================================================================================
    5、恢复快照
    
    恢复快照:

    hdfs dfs -cp <path> <path>

    例如: hdfs dfs -cp /Workspace/linlin/.snapshot/bak2/snaptest  /Workspace

    查看hdfs目录:

    已经成功恢复到 Workspace
    
    ==================================================================================================================================
    题外话:
    我们可以尝试着删除建立过快照的文件夹:是无法删除的,会提示

    存在快照无法删,证明若是在文件夹下面建立快照,文件夹就无法删除或者移动

    原文:http://www.nosqlcn.com/ShowArticle/23
  • 相关阅读:
    Java文件的 In 与 Out 的相对性
    EBS 生产环境并发管理器重启步骤详解经验啊
    HDOJ1285 确定比赛名次(拓扑排序)
    对线性回归、逻辑回归、各种回归的概念学习
    一个截屏工具制作的全过程记录——如何使用“拿来主义”
    免费的响应式bootstrap管理员后台界面主题 Charisma
    挖掘管理价值:企业软件项目管理实战
    浏览器自动填充表单导致网页样式丢失
    「译」开发者如何提升和推销自己
    xcopy的一次误用及解决办法
  • 原文地址:https://www.cnblogs.com/JackQ/p/4586663.html
Copyright © 2011-2022 走看看