【HDFS Snapshot(2.2+)】
HDFS Snapshot是文件系统在某一时间点的只读的备份,Snapshot可以针对文件系统的子树或者整个文件系统。Snapshot的通常用法是做数据backup,以避免用户错误和灾难恢复。
HDFS Snapshot实现是高效的:
1、Snapshot的创建是瞬间完成:除了节点遍历耗时之外,其创建的开销为O(1)。
2、Snapshot后数据发生更改时,将会消耗额外的内存(记录修改操作),内存使用量为O(M),其中M为更改的文件或者目录的个数。
3、Datanodes上的Blocks并不会发生Copy:snapshot文件记录了有关的block列表和文件大小,没有实际数据的Copy。(并不是计算机科学中的Full snapshot)
4、Snapshot不会影响正常的HDFS操作:修改操作按照时间倒叙的方式记录,因此当前数据可以直接访问。snapshot数据由当前数据减去已经修改的部分。snapshot Data = current data - modification。访问数据时会经过snapshot判定(可以认为snapshot在内存中维护了一份目录子树,Namenodes),对于修改记录中没有涉及到的文件或者目录将可以直接访问,否则从snapshot子树中获取。
一、Snapshottable 目录
Snapshot可以在任何snapshottable目录上进行。一个snapshottable目录可以容忍65536个snapshots。文件系统对snapshottable目录个数没有上限。管理员可以将任何目录设置为snapshottable。 如果一个snapshottable目录下存在snapshots(数据),这个目录将不能被删除或者重命名,直到所有的snapshots被删除。
目前不允许snapshottable目录的嵌套,即如果一个目录的父目录或者子目录是snapshottable,那么不能将它设置为snapshottable。
二、 Snapshot 路径
对于一个snapshottable目录,路径部分“.snapshot”用来访问其snapshots。例如“/foo”是一个snapshottable目录,“/foo/bar”是此目录下的一个文件或者目录,且“/foo”已经有一个名为s0的snapshot,那么路径“/foo/.snapshot/bar”即是“/foo/bar”的snapshot复本。如下为可参考例子:
1、列出“/foor”目录下所有的snapshots:
“hdfs dfs -ls /foo/.snapshot”
2、列出名为s0的snapshot中的文件:
“hdfs dfs -ls /foo/.snapshot/s0”
3、从s0中复制文件
“hdfs dfs -cp /foo/.snapshot/s0/bar /tmp”
注意,在HDFS中“.snapshot”作为一个保留字,用户将不能创建“.snapshot”名称的目录或者文件。
三、snapshot操作
1、开启snapshot:将一个目录设置为snapshottable
“hdfs dfsadmin -allowSnapshot <path>”
2、关闭snapshots:此目录下的所有snapshots需要首先删除,才能执行disabllow指令。
“hdfs dfsadmin -disallowSnapshot <path>”
3、创建snapshot:对一个snapshottable目录创建snapshot。
“hdfs dfs -createSnapshot <path> [snapshotName]”
创建snapshot时可以指定名称,这是可选参数;如果没有指定snapshotName,系统将会根据timestamp按照格式“'s' yyyyMMdd-HHmmss.SSS”,例如“s20130412-151029.003”。我们也可以使用HDFS Client API来创建snapshot:FileSystem#createSnapshot(path,snapshotName)。
4、删除snapshots:从一个snapshottable目录下删除snapshots。
“hdfs dfs -deleteSnapshot <path> <snapshotName>”
我们可以首先使用“hdfs dfs -ls <path>/.snapshot”来查看目录下所有snapshots的列表,然后删除。
5、重命名snapshots:修改snapshot的名称
“hdfs dfs -renameSnapshot <path> <oldName> <newName>”
6、列举所有的snapshottable目录
“hdfs lsSnapshottableDir”
7、获取snapshots差别报告:获取两个snapshots的不同。
“hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>”
上述所有snapshot操作,均可以通过FileSystem API操作。snapshots并不会创建实际数据的Copy,不过这些snapshots以及snapshot之后的变更操作将会添加到Namenode的metadata中,对于datanodes并不知道snapshots的任何细节,事实上snapshots操作也不会和Datanodes交互,即一个文件、目录是否有snapshots,Datanodes并不需要知道,创建snapshot也不需要Datanodes做任何额外的操作(包括Block迁移),不过文件的修改操作均会有Namenode判定,当一个目录有snapshot时不允许删除。
相关推荐
【HDFS Snapshot快照】是Hadoop分布式文件系统(HDFS)中的一种功能,它提供了在特定时刻对文件系统或特定目录状态的记录。与传统的数据备份不同,快照不创建数据的完整副本,而是记录文件系统在某一时刻的状态,...
hdfs源码分析整理 在分布式文件系统中,HDFS(Hadoop Distributed File System)扮演着核心角色,而HDFS的源码分析则是深入了解HDFS架构和实现机理的关键。本文将对HDFS源码进行详细的分析和整理,涵盖了HDFS的目录...
安装Ranger-HDFS插件涉及以下几个步骤:首先,需要将"ranger-2.0.0-SNAPSHOT-hdfs-plugin"解压并按照官方文档的指导部署到HDFS集群中的各个NameNode节点;接着,配置Ranger Admin服务,导入HDFS插件,并为HDFS创建...
尽管官方已经停止更新此软件,但它仍然是许多Hadoop用户在Windows环境下管理HDFS的实用工具。 ### 下载与安装 HDFS Explorer的下载链接已过期,但通常可以从开源社区或者历史版本库中找到旧版本的下载资源。在本例...
HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...
在大数据处理领域,Hadoop HDFS(Hadoop Distributed File System)是核心组件之一,它为大规模数据存储提供了可扩展、高容错性的解决方案。本高级教程将深入剖析HDFS的内部机制,帮助读者掌握其核心概念和实际操作...
- `hdfs dfs -createSnapshot`: 创建目录的快照。 - `hdfs dfs -deleteSnapshot`: 删除快照。 - `hdfs dfs -setfacl`: 设置文件或目录的访问控制列表(ACL)。 - `hdfs dfs -setrep`: 修改文件的副本数。 这些命令...
Hadoop分布式文件系统(HDFS)是Apache Hadoop项目的核心组件之一,它为大数据处理提供了可靠的、可扩展的分布式存储解决方案。在这个“HDFS实例基本操作”中,我们将深入探讨如何在已经安装好的HDFS环境中执行基本...
HDFS 文件系统基本文件命令、编程读写 HDFS HDFS(Hadoop Distributed File System)是一种分布式文件系统,用于存储和管理大规模数据。它是 Hadoop 云计算平台的核心组件之一,提供了高效、可靠、可扩展的数据存储...
综上所述,"ranger-2.0.1-SNAPSHOT-hdfs-plugin.tar.gz"压缩包包含的是一个正在开发中的Ranger HDFS插件版本,适用于在Linux环境下加强HDFS的安全管理,提供了丰富的权限控制和审计功能。在使用前,需要了解其安装、...
Hadoop是Apache基金会开发的一个开源分布式存储与计算框架,它的核心组件之一HDFS(Hadoop Distributed File System)是一个高容错性的分布式文件系统,适合在廉价的硬件上运行。HDFS的设计目标是能够存储和处理非常...
【HDFS 透明加密KMS】是Hadoop分布式文件系统(HDFS)提供的一种安全特性,用于保护存储在HDFS中的数据,确保数据在传输和存储时的安全性。HDFS透明加密通过端到端的方式实现了数据的加密和解密,无需修改用户的应用...
hdfs文件的查看 hdfs fs -cat /文件名
### 大数据实验二-HDFS编程实践 #### 实验内容概览 本次实验的主要目标是通过对HDFS(Hadoop Distributed File System)的操作实践,加深学生对HDFS在Hadoop架构中的作用及其基本操作的理解。实验内容包括两大部分...
HDFS Java API 详解 HDFS(Hadoop Distributed File System)是 Hadoop 项目中的一部分,是一个分布式文件系统。HDFS Java API 是一组 Java 类库,提供了一组接口来操作 HDFS。下面我们将对 HDFS Java API 进行详细...
HDFS基本命令 HDFS(Hadoop Distributed File System)是一种分布式文件系统,提供了对大规模数据的存储和管理能力。在HDFS中,基本命令是最基础也是最常用的命令,掌握这些命令是使用HDFS的基础。本节我们将详细...
【标题】"hdfs-over-ftp安装包及说明"涉及的核心技术是将FTP(File Transfer Protocol)服务与HDFS(Hadoop Distributed File System)相结合,允许用户通过FTP协议访问和操作HDFS上的数据。这个标题暗示了我们将在...
Hadoop 分布式文件系统 (HDFS)是一个设计为用在普通硬件设备上的分布式文件系统。它与现有的分布式文件系统有很多近似的地方,但又和这些文件系统有很明显的不同。HDFS是高容错的,设计为部署在廉价硬件上的。HDFS对...
第1章 HDFS 1 1.1 HDFS概述 1 1.1.1 HDFS体系结构 1 1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 ...