hadoop2.x HDFS快照介绍

摘要:
我没有对一些名词进行标准翻译,所以可能有些翻译和使用方法不太正确,不要介意~~原始地址:https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html1.概述快照是基于某个时间点的HDFS文件系统只读拷贝。可以为一个文件夹或整个文件系统拍摄快照--只有在运行涉及快照文件夹的更改时,才能排除inodelookuptime。hdfsdfsadmin allowSnapshot<path>的相应API是HdfsAdmin中的voidallowSnapshot。禁用快照将最初可创建快照的文件夹设置为禁用快照,并且不同意在此文件夹上创建快照。

说明:由于近期正好在研究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快照介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】为什么事务日志自动增长会降低你的性能iOS绘图教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

hive权威安装出现的不解错误!(完美解决)两种方法都可以

   以下两种方法都可以,推荐用方法一! 如果有误,请见博客 MySQL用户权限(Host,User,Password)管理(mysql.user)   可以自己去增加和删除用户。别怕,zhouls! 方法一:   步骤一: yum -y install mysql-server   步骤二:service mysqld start   步骤三:my...

格式化hdfs

多次格式化hdfs的集群,重新格式化会碰到java.io.IOException: NameNode is not formatted的问题。需要先格式化zookeeper sbin/hadoop-daemon.sh start journalnode bin/hdfs zkfc -formatZK 格式化zk bin/hdfs namenode –for...

centos7安装部署opentsdb2.4.0

写在前面 最近因为项目需要在读opentsdb的一部分源码,后面会做个小结分享出来。本人是不大喜欢写这种安装部署的文章,考虑到opentsdb安装部署对于初次接触者来说不太友好,另外对公司做测试的同事可能有些帮助作用,方便他们快速安装部署,就把OpenTSDB 2.4.0安装部署文档写在这里。 对于opentsdb是什么,应用领域这里就不说了,不了解的请看...

Hadoop 管理监控工具:Apache Ambari

Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。 Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase...

hadoop安装教程

hadoop安装集合教程 一、伪分布式系统搭建 hadoop-2.7jdk-1.8 jdk安装 配置在环境变量配置/etc/profile $vim /etc/profile #add JAVA_HOME export JAVA_HOME.... 配置免密登录: 在做免密登录的时候需要集群中的所有节点之间互相之间进行免密,同时还需要自身和自身进行免密登录...

使用root配置的hadoop并启动会出现报错

1、使用root配置的hadoop并启动会出现报错 错误: Starting namenodes on [master] ERROR: Attempting to operate on hdfs namenode as rootERROR: but there is no HDFS_NAMENODE_USER defined. Aborting opera...