【HDFS运维】HDFS回收箱机制:原理、配置、配置可能导致的问题分析

文章目录

  • 一. HDFS回收箱机制逻辑
    • 1. 基本逻辑
    • 2. 举例说明
  • 二. 配置测试
    • 1. 配置
    • 2. 回收箱相关命令
  • 三. 其他问题讨论
    • 1. api不会走trash机制
    • 2. 因为设置了Trash configuration导致nn无法响应

一. HDFS回收箱机制逻辑

1. 基本逻辑

If trash configuration is enabled, files removed by FS Shell is not immediately removed from HDFS. Instead, HDFS moves it to a trash directory (each user has its own trash directory under /user//.Trash). The file can be restored quickly as long as it remains in trash.
 
Most recent deleted files are moved to the current trash directory (/user//.Trash/Current), and in a configurable interval, HDFS creates checkpoints (under /user//.Trash/) for files in current trash directory and deletes old checkpoints when they are expired. See expunge command of FS shell about checkpointing of trash.
 
After the expiry of its life in trash, the NameNode deletes the file from the HDFS namespace. The deletion of a file causes the blocks associated with the file to be freed. Note that there could be an appreciable time delay between the time a file is deleted by a user and the time of the corresponding increase in free space in HDFS.

当hdfs配置了回收箱后,文件删除后会移动到回收箱目录,每个用户都有自己的回收箱目录:/user/<username>/.Trash。只要文件删除后还在回收箱,就可以随时恢复。

删除的文件被移动到/user/<username>/.Trash/Current目录下。配置时间间隔后,HDFS为当前垃圾目录下的文件创建检查点(在/user//. trash /下),并在过期时删除旧的检查点

当过期时,namenode会从namespace删除此文件。文件删除后会释放与之相关的块。文件删除后,磁盘空间的增加会有延迟。

参考:File Deletes and Undeletes

 

2. 举例说明

This will result in deleted files being move to trash and retained in trash for 4 days (i.e. fs.trash.interval); every 12 hours (i.e. fs.trash.checkpoint.interval) the Trash is scanned and files older than 4 days will be deleted (“expunged”) from Trash.

比如删除文件后,文件将会在回收箱保留4天(通过fs.trash.interval设置),每12小时(通过 fs.trash.checkpoint.interval设置)扫描回收箱,并将过期(超过4天)的文件删除。

 

二. 配置测试

1. 配置

在hdfs上面开启trash功能,默认是没有开启的。只需要在hadoop的配置文件core-site.xml中添加下面的内容:

<property><name>fs.trash.interval</name><value>360</value><description>检查点被删除后的分钟数。如果为零,垃圾桶功能将被禁用。该选项可以在服务器和客户端上配置。如果垃圾箱被禁用服务器端,则检查客户端配置。如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description>
</property><property><name>fs.trash.checkpoint.interval</name><value>0</value><description>垃圾检查点之间的分钟数。应该小于或等于fs.trash.interval。如果为零,则将该值设置为fs.trash.interval的值。每次检查指针运行时,它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description>
</property>

不需要重启,直接执行

2. 回收箱相关命令

# 删除bin/hdfs dfs -rm /conf.tar.gz
2023-12-05 14:54:43,989 INFO fs.TrashPolicyDefault: Moved: 'hdfs://xxx/conf.tar.gz' to trash at: hdfs://xmanhdfs3/user/taiyi/.Trash/Current/conf.tar.gz# 查看回收箱文件
bin/hdfs dfs -ls hdfs://xxx/user/taiyi/.Trash/Current/conf.tar.gz
-rw-r--r--   3 taiyi supergroup       7605 2023-12-05 14:54 hdfs://xxx/user/taiyi/.Trash/Current/conf.tar.gz# 文件恢复:就是将文件从回收箱中移出
bin/hdfs dfs -mv  hdfs://xxx/user/taiyi/.Trash/Current/conf.tar.gz /# 清空回收站
bin/hdfs dfs -expunge# 跳过回收站直接删除
hdfs dfs -rm -r -skipTrash /user/root/123123

 

三. 其他问题讨论

1. api不会走trash机制

但如果直接调用hadoop delete api进行删除操作,是默认不会走trash机制的,同时也未配置快照功能的情况下,文件所对应的block数据已经开始真正从底层文件系统层面进行删除,此时需要快速的做出决断进行恢复操作。

因为需要停止数据服务(nn、dn),所以需要综合考虑,去权衡恢复数据和停服对线上服务的影响两者之间的利害关系。

参考:

恢复数据
如何有效恢复误删的HDFS文件

ing

 

2. 因为设置了Trash configuration导致nn无法响应

Hadoop NameNode becomes un-responsive due to Trash configuration

Resolving The Problem
In order to prevent the NameNode having to perform an extreme amount of file to block map maintenance (which will also impact the DataNode(s)), the settings for fs.trash.interval and fs.trash.checkpoint.interval should be set so that the amount of data to be expunged at a single point of time is within the capability of the environment; a suggestion being under 10GB.

namenode单次删除回收箱的数据不大于10G

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Quartus II 13.1入门使用方法

Quartus II是由Altera Corporation&#xff08;现为英特尔旗下的Intel Programmable Solutions Group&#xff09;发布的一款综合性的FPGA设计软件。Quartus II提供了从设计输入和综合到优化、验证和仿真的全套解决方案。下面是一个关于Quartus II 13.1版本入门级使用方法的简要…

22款奔驰C260L升级小柏林音响 无损音质效果

奔驰新款C级号称奔驰轿车的小“S”&#xff0c;在配置方面上肯定也不能低的&#xff0c;提了一台低配的车型&#xff0c;通过后期升级加装件配置提升更高档次&#xff0c;打造独一无二的奔驰C级&#xff0c;此次来安排一套小柏林之声音响&#xff0c;效果怎么样&#xff0c;我们…

鸿蒙(HarmonyOS)应用开发——构建更加丰富的页面(题目答案)

判断题 1.State修饰的属性不允许在本地进行初始化。 错误(False) 解析&#xff1a; State isExpanded: boolean false;2.CustomDialog装饰器用于装饰自定义弹窗组件&#xff0c;使得弹窗可以自定义内容及样式。 正确(True) 3.将Video组件的controls属性设置为false时&…

剪刀石头布游戏

csdn问答社区的一道题目&#xff0c;题目描述都像一篇论文了&#xff0c;界面设置不敢恭维&#xff0c;不过也算是可练手工程。 (笔记模板由python脚本于2023年12月05日 22:15:03创建&#xff0c;本篇笔记适合熟悉Python字典、列表、字符串的coder翻阅) 【学习的细节是欢悦的历…

[JavaScript前端开发及实例教程]计算器井字棋游戏的实现

计算器&#xff08;网页内实现效果&#xff09; HTML部分 <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>My Calculator&l…

Centos 搭建Git私有服务器

要在CentOS上搭建Git私有服务器&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装和配置Git服务器软件&#xff1a; 确保您的CentOS系统已经安装了Git软件包。您可以使用yum命令安装Git&#xff1a;sudo yum install git。如果您想使用企业级的Git服务器&#xff0c;可…

如何有效预防内存泄漏?

1.前言 最近部门不同产品接连出现内存泄漏导致的网上问题&#xff0c;具体表现为单板在现网运行数月以后&#xff0c;因为内存耗尽而导致单板复位现象。 一方面&#xff0c;内存泄漏问题属于低级错误&#xff0c;此类问题遗漏到现网&#xff0c;影响很坏&#xff1b;另一方面…

微信小程序基础

1.小程序发展史 微信小程序之前&#xff0c;是使用weixin-sdk进行开发&#xff0c;调用视频&#xff0c;摄像头等。 微信小程序weixin up端&#xff0c;所以PC端的window这些没有&#xff0c;运行环境是IOS&#xff0c;安卓等&#xff0c;有一些特殊的调用录音功能&#xff0…

JavaScript 安全的《加/解密处理》的实战--案例(二)

前言: 在Web开发中&#xff0c;安全性一直是一个重要而复杂的议题&#xff0c;尤其是与敏感数据操作有关时。数据传输地过程中需要保证信息绝对的安全性&#xff0c;包括了诸如用户名、密码、个人信息等&#xff0c;这就需要对这类信息进行加密与解密。本案例&#xff08;二&a…

java google.zxing解析二维码工具类

文章目录 pom代码解析用例生成二维码用例 pom <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version> </dependency>代码 import com.google.zxing.*; import com.google…

通俗理解Jenkins是什么?

目录 通俗理解 Jenkins是什么&#xff1f; 通俗理解 假设你有一个软件项目&#xff0c;多个开发者在一起写代码。每当有人提交新的代码时&#xff0c;你想要自动地构建、测试这些代码&#xff0c;确保它们没有引入问题。 Jenkins就像一个聪明的助手&#xff0c;会在有人提交…

【数据仓库-10】-- 数据仓库、数据湖和湖仓一体对比

目录 1 数据仓库与数据库的对比 2 数据湖与数据仓库的对比 3 数据仓库、数据湖和湖仓一体

检查 `/var` 是否有自己的独立分区

要检查 /var 是否有自己的独立分区&#xff0c;您可以使用以下方法&#xff1a; 1. 使用 df 命令 df 命令&#xff08;磁盘文件系统&#xff09;可以用来报告文件系统的磁盘空间使用情况。要查看 /var 的情况&#xff0c;请运行&#xff1a; df -h /var这个命令会显示 /var …

在AWS Lambda中使用FFmpeg处理m3u8视频流

大纲 1 部署有FFmpeg功能的Lambda环境1.1 部署层1.2 部署代码1.2.1 FFmpeg指令1.2.2 代码 2 配置Lambda角色权限2.1 选择角色类型2.2 设置权限2.3 保存角色2.4 绑定角色 参考文献 在直播里领域&#xff0c;我们经常需要对视频流进行处理。FFmpeg则是该领域中处理的利器。这篇文…

根文件系统的开机自启动测试

一. 简介 本文在之前制作的根文件系统可以正常运行的基础上进行的&#xff0c;继上一篇文章地址如下&#xff1a; 完善根文件系统-CSDN博客 在前面测试软件hello 运行时&#xff0c;都是等 Linux 启动进入根文件系统以后手动输入 “./hello” 命令 来完成的。 我们一般做好产…

C++:一个函数返回值的小问题

今天一位同学问了我这样一个问题&#xff1a; int& getDState() { return _dstate; } int getDState() { return _dstate; }这两个函数有什么区别&#xff1f; 这两个返回一个名为 _dstate 的成员变量或变量。函数的返回类型不同&#xff0c;在C中是不允许的&#xff0c;…

Python计算方差

方差可以反应变量的离散程度&#xff0c;是因为它度量了数据点与均值的差异。方差是每个数据点与均值的差的平方和的平均值&#xff0c;它可以反映数据点在均值附近的分布情况。如果方差较小&#xff0c;说明数据点更加集中在均值附近&#xff0c;离散程度较小&#xff1b;如果…

uniapp微信小程序分包,小程序分包

前言&#xff0c;都知道我是一个后端开发、所以今天来写一下uniapp。 起因是美工给我的切图太大&#xff0c;微信小程序不让了&#xff0c;在网上找了一大堆分包的文章&#xff0c;我心思我照着写的啊&#xff0c;怎么就一直报错呢&#xff1f; 错误原因 tabBar的页面被我放在分…

【JSD1209考试】题目与解答

选择题 在Java Applet程序中&#xff0c;如果对发生的事件做出响应和处理的时候&#xff0c;应该使用的语句是&#xff1f; ( C ) &#xff08;1分&#xff09; A. import java.awt.*;B. import java.applet.*;C. import java.awt.event.*;D. import java.io.*; 以下返回true的…

【从零开始学习JVM | 第一篇】快速了解JVM

前言&#xff1a; 在探索现代软件开发的丰富生态系统时&#xff0c;我们不可避免地会遇到一个强大而神秘的存在——Java虚拟机&#xff08;JVM&#xff09;。作为Java语言最核心的组成之一&#xff0c;JVM已经超越了其最初的设计目标&#xff0c;成为一个多语言的运行平台&…