Hadoop 2.1.0 beta HDFS SnapShot 介绍

     Hadoop 2.1.0 Beta 版 HDFS 提供了SnapShot 模块。用于数据备份、回滚。已防止因用户的失误操作导致集群出现问题。本文先做一个简单的介绍,其他的文章在来介绍Snapshot 本身的实现机制。

   

   首先

   HDFS 的Snapshot 大概有以下几个特性:

  • Snapshot 创建的时间 复杂度为O(1),但是不包括INode 的寻找时间
  • 只有当修改SnapShot时,才会有额外的内存占用,内存使用量为O(M),M 为修改的文件或者目录数
  • 在datanode 上面的blocks 不会复制,做Snapshot 的文件是纪录了block的信息
  • Snapshot 并不会影响HDFS 的正常操作

   然后,有以下的几个新的概念来产生

   Snapshot table

    

        Snapshots 会存储在snapshottable的目录下。snapshottable下存储的snapshots 最多为65535个,

   

   Snapshot 路径 

        

         举例,假设/foo  是snapshottable,/foo/bar 是文件目录,/foo 拥有一个s0的snapshot

    

      那么路径会是 /foo/.snapshot/s0/bar

   

      我们可以通过 hdfs dfs -ls /foo/.snapshot

                            hdfs dfs -ls /foo/.snapshot/s0

                            hdfs dfs -cp /foo/.snapshot/s0/bar /tmp 

      来操作与查看副本文件。

       

  最后,让我们来看下基本操作的介绍

   Snapshot 基本操作

   

  •  对一个路径开启Snapshot
    •  hdfs dfsadmin -allowSnapshot <path>
  •  关闭 Snapsshots
    •  hdfs dfsadmin -disallowSnapshot <path>
  • 创建Snapshosts
  • hdfs dfs -createSnapsshot <path> [snapshot names]
  •  删除Snapshots
  • hdfs dfs -deleteSnaphost <path> <snapshotName>
  •  修改Snapshots的名字
    • hdfs dfs -renameSnapshot <path>  <oldname> <newname>
  •  获取Snapshot 列表
    • hdfs lsSnapshottableDir
  • 获取两个Snapshot的不同
    • hdfs snapsshotDiff <path> <fromSnapshot> <toSnapshot>

   文章资料来源:http://hadoop.apache.org/docs/r2.1.0-beta/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

猜你喜欢

转载自tulingss.iteye.com/blog/1931843