说明:由于近期正好在研究hadoop的快照机制。看官网上的文档讲的非常仔细。就顺手翻译了。也没有去深究一些名词的标准译法,所以可能有些翻译和使用方法不是非常正确,莫要介意~~

原文地址:(Apache hadoop的官方文档) https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

1. 概述

快照snapshots是HDFS文件系统的仅仅读的基于某时间点的拷贝,能够针对某个文件夹,或者整个文件系统做快照。

快照比較常见的应用场景是数据备份,以防一些用户错误或灾难恢复。

快照的高效性实现:

(1) 快照能够即时创建。耗时仅为O(1)。

--excluding the inode lookup time

(2) 仅仅有当涉及到快照文件夹的改动被运行时。才会产生额外的内存消耗。

并且内存消耗为O(M)。当中M是被改动的文件或文件夹数。

(3) 创建快照时,block块并不会被拷贝。

快照文件里仅仅记录了block列表和文件大小,不会做不论什么数据拷贝。

(4) 快照不会对正常的HDFS操作有不论什么影响:创建快照以后发生的改动操作,被按操作时间的倒序(from newer to older)记录下来。

所以当前的数据能被直接获取,而快照点的数据。则通过在当前的数据基础上减去运行过的操作来获取。

-- 所以我理解时间越久的快照。要获取就须要越长的时间。

1.1 快照文件夹

我们能够在不论什么被设置为snapshottable的文件夹上运行快照,对一个文件夹最多能够创建65536个快照。管理员能够把不论什么文件夹设置为snapshottable,没有限制。

假设一个文件夹下已经存在快照,那么仅仅有当先删除全部快照后才干对这个文件夹进行删除和重命名等操作。

不同意嵌套的snapshottable文件夹。也就是说,假设一个文件夹被设置为snapshottable,那么它的父文件夹和子文件夹都不同意被设置为snapshottable。

1.2 快照路径

快照被存放在一个被命名为.snapshot的文件夹中。

比方/foo是一个snapshottable文件夹,/foo中有一个文件夹为/foo/bar,对/foo创建一个快照s0。那么

/foo/.snapshot/s0/bar

就是/foo/bar文件夹相应的快照。能够通过".snapshot"路径直接訪问和操作快照数据。比如:

  • 列出一个文件夹的全部快照:
hdfs dfs -ls /foo/.snapshot

  • 列出快照s0中的全部文件:
hdfs dfs -ls /foo/.snapshot/s0

  • 从快照中拷贝文件:

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

2. 快照操作


2.1 快照管理

仅仅有集群的管理员才有权限进行例如以下操作。

同意快照

把一个文件夹设置为snapshottable,就是设置同意对一个文件夹创建快照。

hdfs dfsadmin -allowSnapshot <path>

相应的API为HdfsAdmin中的void allowSnapshot(Path path)。

禁止快照

把原本snapshottable的文件夹设置为禁止快照,不同意对该文件夹创建快照。在对一个文件夹设置禁止快照之前,要先删除该文件夹的全部快照。

hdfs dfsadmin -disallowSnapshot <Path>

相应的API为HdfsAdmin中的void disallowSnapshot(Path path)。

2.2 用户操作

创建快照

为一个文件夹创建快照,仅仅有文件夹的所属人权限能为这个文件夹创建快照。

hdfs dfs -createSnapshot <Path> [<snapshotName>]

snapshotName是要创建的快照名,假设未定义。默认取当前时间戳作为快照名。类似”"s20130412-151029.033“。

相应的API为FileSystem中的Path createSnapshot(Path path)和Path createSnapshot(Path path, String snapshotName)。

删除快照

删除一个snapshottable文件夹的一个快照。

删除操作也须要文件夹的所属人权限。

hdfs dfs -deleteSnapshot <Path> <snapshotName>

相应的API为FileSystem中的void deleteSnapshot(Path path, String snapshotName)。

重命名快照

重命名一个快照。

也须要该文件夹的所属人权限。

hdfs dfs -renameSnapshot <Path> <oldName> <newName>

相应的API为FileSystem中的void renameSnapshot(Path path, String oldName, String newName)。

列出全部同意快照文件夹

列出全部当前用户有权限获取的。同意快照的文件夹。

hdfs lsSnapshottableDir

相应的API为DistributeFileSystem中的snapshottableDirectoryStatus[] getSnapshottableDirectoryListing()。

对照快照

对照两个快照。

这个操作须要用户对两个快照文件夹同一时候具有读权限。

hdfs snapshotDiff <Path> <fromSnapshot> <toSnapshot>

相应API为DistributeFileSystem中的SnapshotDiffReport getSnapshotDiffReport(Path path, String fromSnapshot, String toSnapshot)。

hadoop2.x HDFS快照介绍的更多相关文章

  1. 【Hadoop离线基础总结】HDFS详细介绍

    HDFS详细介绍 分布式文件系统设计思路 概述 只有一台机器时的文件查找:hello.txt /export/servers/hello.txt 如果有多台机器时的文件查找:hello.txt nod ...

  2. HDFS简单介绍及用C语言訪问HDFS接口操作实践

    一.概述 近年来,大数据技术如火如荼,怎样存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有很广 ...

  3. 【Hadoop离线基础总结】HDFS入门介绍

    HDFS入门介绍 概述 HDFS全称为Hadoop Distribute File System,也就是Hadoop分布式文件系统,是Hadoop的核心组件之一. 分布式文件系统是横跨在多台计算机上的 ...

  4. HDFS Federation(转HDFS Federation(HDFS 联盟)介绍 CSDN)

    转载地址:http://blog.csdn.net/strongerbit/article/details/7013221 HDFS Federation(HDFS 联盟)介绍 1. 当前HDFS架构 ...

  5. HDFS原理介绍

    HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Googl ...

  6. HDFS的介绍

    设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 在大数据系统中作用:为各类分布式运算框架(如:mapreduce,spark,te ...

  7. 【转】HADOOP HDFS BALANCER介绍及经验总结

    转自:http://www.aboutyun.com/thread-7354-1-1.html 集群平衡介绍 Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加 ...

  8. hadoop2.x HDFS HA linux环境搭建

    HDFS High Availability Using the Quorum Journal Manager 准备3台机器可以更多   NN  DN  ZK  ZKFC  JN  RM  DM  n ...

  9. HDFS 入门介绍

    HDFS简介 HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问, ...

随机推荐

  1. Hadoop框架基础(三)

    ** Hadoop框架基础(三) 上一节我们使用eclipse运行展示了hdfs系统中的某个文件数据,这一节我们简析一下离线计算框架MapReduce,以及通过eclipse来编写关于MapReduc ...

  2. PostgreSQL Replication之第一章 理解复制概念(3)

    1.3 使用分片和数据分配 本节您将了解基本可扩展性技术,例如数据库分片.分片被广泛应用于高端系统并提供一个简单而且可靠的扩展设置方式来向外扩展.近年来,分片已经成为一种扩大专业系统规模的标准方式. ...

  3. 一篇文章助你理解Python2中字符串编码问题

    前几天给大家介绍了unicode编码和utf-8编码的理论知识,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系.下面在Python2环境中进行代码演示,分别Wind ...

  4. 【Git 五】TortoiseGit中SSH密钥的配置方法

    注意:我用的 TortoiseGit 版本是 2.6 的. 一.找到安装目录下的 bin 目录 二.点击 puttygen.exe 三.点击 Generate 生成完毕之后,将 public key ...

  5. kubernetes学习与实践篇(二) kubernetes1.5 的安装和集群环境部署

    kubernetes 1.5 的安装和集群环境部署 文章转载自:http://www.cnblogs.com/tynia/p/k8s-cluster.html 简介: Docker:是一个开源的应用容 ...

  6. Entity Framework的一个实例

    环境:Visual studio2013+sql server本地数据库 创建一个C#应用程序,首先在nuget中添加Entity Framework 接下来的工作分为四个主要部分: 第一部分:App ...

  7. 如何使用Java创建Excel(.xls 和 .xlsx)文件 并写入数据

    1,需要依赖的jar包, <!-- POI(operate excel) start --> <!-- the version of the following POI packag ...

  8. 一起talk C栗子吧(第八十一回:C语言实例--进程停止)

    各位看官们,大家好,上一回中咱们说的是进程相互排斥的样例,这一回咱们说的样例是:进程停止.闲话休提,言归正转. 让我们一起talk C栗子吧! 我们在前面的章回中介绍了怎样创建进程,只是没有介绍停止进 ...

  9. HDUOJ Let the Balloon Rise 1004

     /* Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  10. POJ 3193 字符串排序+比较

    思路: 1. 先把那m个排个序 此后每回二分+strncmp一下就好了 strncmp是个好东西啊-- 2. hash判判 (注意 hash会有冲突--------.) //By SiriusRen ...