百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

HDFS回收站、Trash机制、Trash Checkpoint、快照功能使用

wptr33 2025-05-16 16:45 17 浏览

回收站的功能给了我们一剂“后悔药”。回收站保存了删除的文件、文件夹、图片、快捷方式等。这些项目将一直保留在回收站中,直到您清空回收站。我们许多无法删除的文件就是从它里面找到的。

HDFS本身也是一个文件系统,那么就会涉及到文件数据的删除操作。默认情况下,HDFS中是没有回收站垃圾桶概念的,删除操作的数据将会被直接删除,没有后悔药。

功能概述

Trash机制,叫做回收站或者垃圾桶。Trash就像Windows操作系统中的回收站一样。它的目的是防止你无意中删除某些东西。默认情况下是不开启的。

启用Trash功能后,从HDFS中删除某些内容时,文件或目录不会立即被清除,它们将被移动到回收站Current目录中(/user/${username}/.Trash/current)。

.Trash中的文件在用户可配置的时间延迟后被永久删除。也可以简单地将回收站里的文件移动到.Trash目录之外的位置来恢复回收站中的文件和目录。

Trash Checkpoint

检查点仅仅是用户回收站下的一个目录,用于存储在创建检查点之前删除的所有文件或目录。如果你想查看回收站目录,可以在/user/${username}/.Trash/{
timestamp_of_checkpoint_creation}处看到:

最近删除的文件被移动到回收站Current目录,并且在可配置的时间间隔内,HDFS会为在Current回收站目录下的文件创建检查点/user/${username}/.Trash/<日期>,并在过期时删除旧的检查点。

功能开启

关闭HDFS集群

在节点上,执行一键关闭HDFS集群命令:stop-dfs.sh。

修改core-site.xml文件

在节点上修改core-site.xml文件,添加下面两个属性:

vim /export/server/hadoop-3.1.4/etc/hadoop/core-site.xml

<property>
		<name>fs.trash.interval</name>
		<value>1440</value>
</property>

<property>
		<name>fs.trash.checkpoint.interval</name>
		<value>0</value>
</property>

fs.trash.interval:分钟数,当超过这个分钟数后检查点会被删除。如果为零,Trash回收站功能将被禁用。


fs.trash.checkpoint.interval
:检查点创建的时间间隔(单位为分钟)。其值应该小于或等于fs.trash.interval。如果为零,则将该值设置为fs.trash.interval的值。每次运行检查点时,它都会从当前版本中创建一个新的检查点,并删除在数分钟之前创建的检查点。

启动HDFS集群

在节点上,执行一键启动HDFS集群命令:start-dfs.sh。

功能使用

删除文件到Trash

开启Trash功能后,正常执行删除操作,文件实际并不会被直接删除,而是被移动到了垃圾回收站。

当然也可以去Trash回收站下面查看一下:

删除文件跳过Trash

有的时候,我们希望直接把文件删除,不需要再经过Trash回收站了,可以在执行删除操作的时候添加一个参数:-skipTrash.

hadoop fs -rm -skipTrash /smallfile1/3.txt

从Trash中恢复文件

回收站里面的文件,在到期被自动删除之前,都可以通过命令恢复出来。使用mv、cp命令把数据文件从Trash目录下复制移动出来就可以了。

hadoop fs -mv /user/root/.Trash/Current/smallfile1/* /smallfile1/

清空Trash

除了fs.trash.interval参数控制到期自动删除之外,用户还可以通过命令手动清空回收站,释放HDFS磁盘存储空间。

首先想到的是删除整个回收站的目录,将会清空回收站,这是一个选择。此外。HDFS提供了一个命令行工具来完成这个工作:

hadoop fs -expunge

该命令立即从文件系统中删除过期的检查点。

Snapshot快照

快照介绍和作用

HDFS snapshot是HDFS整个文件系统,或者某个目录在某个时刻的镜像。该镜像并不会随着源目录的改变而进行动态的更新。可以将快照理解为拍照片时的那一瞬间的投影,过了那个时间之后,又会有新的一个投影。

HDFS快照的核心功能包括:数据恢复、数据备份、数据测试。

数据恢复

可以通过滚动的方式来对重要的目录进行创建snapshot的操作,这样在系统中就存在针对某个目录的多个快照版本。当用户误删除掉某个文件时,可以通过最新的snapshot来进行相关的恢复操作。

数据备份

可以使用snapshot来进行整个集群,或者某些目录、文件的备份。管理员以某个时刻的snapshot作为备份的起始节点,然后通过比较不同备份之间差异性,来进行增量备份。

数据测试

在某些重要数据上进行测试或者实验,可能会直接将原始的数据破坏掉。可以临时的为用户针对要操作的数据来创建一个snapshot,然后让用户在对应的snapshot上进行相关的实验和测试,从而避免对原始数据的破坏。

HDFS快照的实现

在了解HDFS快照功能如何实现之前,首先有一个根本的原则需要记住:快照不是数据的简单拷贝,快照只做差异的记录。这一原则在其他很多系统的快照概念中都是适用的,比如磁盘快照,也是不能保存真实数据的。因为不保存实际的数据,所以快照的生成往往非常迅速。

在HDFS中,如果在其中一个目录比如/A下创建一个快照,则快照文件中将会存在与/A目录下完全一致的子目录文件结构以及相应的属性信息,通过命令也能看到快照里面具体的文件内容。但是这并不意味着快照已经对此数据进行完全的拷贝 。这里遵循一个原则:对于大多数不变的数据,你所看到的数据其实是当前物理路径所指的内容,而发生变更的inode数据才会被快照额外拷贝,也就是所说的差异拷贝。

inode译成中文就是索引节点,它用来存放文件及目录的基本信息,包含时间、名称、拥有者、所在组等信息。

HDFS快照不会复制datanode中的块,只记录了块列表和文件大小。

HDFS快照不会对常规HDFS操作产生不利影响,修改记录按逆时针顺序进行,因此可以直接访问当前数据。通过从当前数据中减去修改来计算快照数据。

快照的命令

快照功能启停命令

HDFS中可以针对整个文件系统或者文件系统中某个目录创建快照,但是创建快照的前提是相应的目录开启快照的功能

如果针对没有启动快照功能的目录创建快照则会报错。

启用快照功能:

hdfs dfsadmin -allowSnapshot /allenwoon

禁用快照功能:

hdfs dfsadmin -disallowSnapshot /allenwoon

快照操作相关命令

[root@node1 ~]# hdfs dfs
Usage: hadoop fs [generic options]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[root@node1 ~]# hdfs lsSnapshottableDir
[root@node1 ~]# hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>

快照相关的操作命令有:createSnapshot创建快照、deleteSnapshot删除快照、renameSnapshot重命名快照、lsSnapshottableDir列出可以快照目录列表、snapshotDiff获取快照差异报告

相关推荐

SpringBoot 3 + Flutter3 实战低代码运营管理-10章

获课》aixuetang.xyz/5075/三天构建运营管理系统:SpringBoot3+Flutter3高效开发方法论...

SpringBoot探针实现:从零构建应用健康监控利器

SpringBoot探针实现:从零构建应用健康监控利器声明本文中的所有案例代码、配置仅供参考,如需使用请严格做好相关测试及评估,对于因参照本文内容进行操作而导致的任何直接或间接损失,作者概不负责。本文...

Spring Batch中的JobRepository:批处理的“记忆大师”是如何工作

一、JobRepository是谁?——批处理的“档案馆”JobRepository是SpringBatch的“记忆中枢”,负责记录所有Job和Step的执行状态。它像一位严谨的档案管理员,把任务执...

Github霸榜的SpringBoot全套学习教程,从入门到实战,内容超详细

前言...

还在为 Spring Boot3 技术整合发愁?一文解锁大厂都在用的实用方案

你在使用SpringBoot3开发后端项目时,是不是常常陷入这样的困境?想提升项目性能和功能,却不知道该整合哪些技术;好不容易选定技术,又在配置和使用上频频踩坑。其实,这是很多互联网大厂后端开发...

一文吃透!Spring Boot 项目请求日志记录,这几招你绝对不能错过!

在互联网应用开发的高速赛道上,系统的稳定性、可维护性以及安全性是每一位开发者都必须关注的核心要素。而请求日志记录,就如同系统的“黑匣子”,能够为我们提供排查故障、分析用户行为、优化系统性能等关键信息...

spring-boot-starter-actuator简单介绍

SpringBootActuator是SpringBoot的一个功能强大的子项目,它提供了一些有用的监控和管理SpringBoot应用程序的端点。SpringBootActuat...

使用SpringBoot钩子或Actuator实现优雅停机

服务如何响应停机信号在java中我们可以直接利用通过Runtime...

28-自定义Spring Boot Actuator指标

上篇我们学习了《27-自定义SpringBootActuator健康指示器》,本篇我们学习自定义SpringBootActuator指标(Metric)。...

如何在Spring Boot中整合Spring Boot Actuator进行服务应用监控?

监控是确保系统稳定性和性能的关键组成部分,而在SpringBoot中就提供了默认的应用监控方案SpringBootActuator,通过SpringBootActuator提供了开箱即用的应...

「Spring Boot」 Actuator Endpoint

Actuator官网地址:https://docs.spring.io/spring-boot/docs/2.5.6/reference/html/actuator.html目的监控并管理应用程序...

Spring Boot Actuator监控功能全面剖析

SpringBootActuator监控功能全面剖析在现代企业级Java开发中,SpringBoot以其轻量化、高效率的特性深受开发者青睐。而作为SpringBoot生态系统的重要组成部分,S...

1000字彻底搞懂SpringBootActuator组件!

SpringBootActuator组件SpringBootActuator通过HTTPendpoints或者JMX来管理和监控SpringBoot应用,如服务的审计、健康检查、指标统计和...

JavaScript数据类型(javascript数据类型介绍)

基本数据类型BooleanNullNumberStringSymbolUndefined对象数据类型ObjectArray定义:JavaScript数组是内置的对象之一,它可以用一个变量来存储多个同种...

能运行,不代表它是对的:5 个潜伏在正常功能下的 JavaScript 错误

JavaScript的动态性和复杂性意味着,代码虽然表面上正常运行,但一些深层次、隐蔽的陷阱往往让人意想不到,梳理了几个JavaScript开发中难以发现的隐蔽错误,旨在帮助我们写出更健壮、更可...