HDFS元数据管理/磁盘清理维护

元数据管理

1.元数据管理概述

> HDFS分类-类型分包括以下几部分

文件、目录自身的属性信息,例如文件名,目录名,修改信息等
文件记录的信息的存储相关的信息,例如存储块信息,分块情况,副本个数等
记录 HDFS 的 Datanode 的信息,用于 DataNode 的管理。

> 按形式分

内存元数据   内存
元数据文件两种  磁盘


> HDFS 磁盘上元数据文件分为两类,用于持久化存储:

 fsimage 镜像文件:是元数据的一个持久化的检查点,包含 Hadoop 文件系统中的所有目录和文件元数据信息,但不包含文件块位置的信息。
Edits 编辑日志:存放的是 Hadoop 文件系统的所有更改操作(文件创建,删除或修改)的日志,文件系统客户端执行的更改操作首先会被记录到 edits 文件中。
> ps:所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据

当客户端对 HDFS 中的文件进行新增或者修改操作,操作记录首先被记入 edits 日志文件中,
当客户端操作成功后,相应的元数据会更新到内存元数据中。因为 fsimage 文件一般都很大
(GB 级别的很常见),如果所有的更新操作都往 fsimage文件中添加,这样会导致系统运行的
十分缓慢。HDFS 这种设计实现着手于:一是内存中数据更新、查询快,极大缩短了操作响应时间;
二是内存中元数据丢失风险颇高(断电等),因此辅佐元数据镜像文件(fsimage)+编辑日
志文件(edits)的备份机制进行确保元数据的安全。

2.元数据目录


在 Hadoop 的 HDFS 首次部署好配置文件之后,并不能马上启动使用,而是先要对文件系
统进行格式化。需要在 NameNode(NN)节点上进行如下的操作:

$HADOOP_HOME/bin/hdfs namenode –format

文件系统:此时的文件系统在物理上还不存在

格式化:格式化并不是指传统意义上的本地磁盘格式化,而是一些清除与准备工作。

> HDFS中文件块目录结构具体格式如下:

${dfs.datanode.data.dir}/ 
├── current 
│ ├── BP-526805057-127.0.0.1-1411980876842 
│ │ └── current 
│ │ ├── VERSION 
│ │ ├── finalized 
│ │ │ ├── blk_1073741825 
│ │ │ ├── blk_1073741825_1001.meta 
│ │ │ ├── blk_1073741826 
│ │ │ └── blk_1073741826_1002.meta 
│ │ └── rbw 
│ └── VERSION 
└── in_use.lock

目录在哪是在 hdfs-site.xml的dfs.namenode.name.dir指定  可以是多个

> seen_txid:

$dfs.namenode.name.dir/current/seen_txid 非常重要,是存放 transactionId 的文
件,format 之后是 0,它代表的是 namenode 里面的 edits_*文件的尾数,namenode 重启的
时候,会按照 seen_txid的数字,循序从头跑 edits_0000001~到 seen_txid 的数字。所以
当你的 hdfs 发生异常重启的时候,一定要比对 seen_txid 内的数字是不是你 edits 最后的
尾数。

做完之后会在$dfs.namenode.name.dir/current创建文件结构:这个目录也正是 namenode 元数据相关的文件目录:

cat VERSIONnamespaceID=1752067181
clusterID=cluster84
cTime=0
storageType=NAME_NODE
blockpoolID=BP-824456762-192.168.20.39-1508928616349
layoutVersion=-60
  • namespaceID/clusterID/blockpoolID:HDFS 集群的唯一标识符.防止 DataNodes 意外注册到另一个集群中的 namenode 上
  • storageType:说明这个文件存储的是什么进程的数据结构信息(如果是 DataNode,storageType=DATA_NODE);
  • cTime:NameNode 存储系统创建时间,首次格式化文件系统这个属性是 0,当文件系统升级之后,该值会更新到升级之后的时间戳;
  • layoutVersion :表示 HDFS 永久性数据结构的版本信息,是一个负整数。

3.SecondaryNameNode:

> 这个出现的原因:
HDFS 集群运行一段事件后

edit logs 文件会变的很大,怎么去管理这个文件是一个挑战。
NameNode 重启会花费很长时间,因为有很多改动要合并到 fsimage 文件上。
如果 NameNode 挂掉了,那就丢失了一些改动。因为此时的 fsimage 文件非常旧。

作用:减小sedit logs文的件的大小和得到一个最新的fsimage
文件,减少在namenode上的压力。相当于windows的恢复功能(可以说是快照)
职责:它的职责是合并 NameNode的editlogs到fsimage文件中。

4.checkpoint

> 简介:

每达到触发条件,会由secondary namenode 将 namenode 上积累的所有 edits 和一个
最新的 fsimage 下载到本地,并加载到内存进行 merge(这个过程称为 checkpoint)

> Checkpoint 触发条件

dfs.namenode.checkpoint.period:两次连续的 checkpoint 之间的时间间隔。默认 1 小时
dfs.namenode.checkpoint.txns:最大的没有执行 checkpoint 事务的数量,满足将强制执行紧急 checkpoint,即使尚未达到检查点周期。默认设置为 100 万
 

 

拓展

1.hdfs oiv命令

命令hdfs oiv用于将fsimage,edits文件转换成其他格式的,如文本文件、XML文件。
> HDFS查看fsimage,edits

命令说明
> 必要参数-i,–inputFile <arg>      输入FSImage文件.-o,–outputFile <arg> 输出转换后的文件,如果存在,则会覆盖> 可选参数:-p,–processor <arg>   将FSImage文件转换成哪种格式:(Ls|XML|FileDistribution).默认为Ls.-h,–help           显示帮助信息hdfs oiv -i fsimage_0000000000016975189 -o 123.xmlhdfs oiv -i /var/lib/hadoop-yarn/test00001/data/fsimage_0000000000016975189  -o fsimage.txt

2.hadoop命令fsck命令

在HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态、获取文件的block块信息和位置信息等。
> 具体命令介绍

- move: 移动损坏的文件到/lost+found目录下 
- delete: 删除损坏的文件 
- openforwrite: 输出检测中的正在被写的文件 
- list-corruptfileblocks: 输出损坏的块及其所属的文件 
- files: 输出正在被检测的文件 
- blocks: 输出block的详细报告 (需要和-files参数一起使用) 
- locations: 输出block的位置信息 (需要和-files参数一起使用) 
- racks: 输出文件块位置所在的机架信息(需要和-files参数一起使用) 

例如要查看HDFS中某个文件的block块的具体分布,可以这样写:

hadoop fsck /your_file_path -files -blocks -locations -racks 

> 实例

$ hadoop fsck /qpf/yyd/test/job.properties -files -blocks  -locations -racks
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.Connecting to namenode via http://yhml01cs002:50070/fsck?ugi=yarn&files=1&blocks=1&locations=1&racks=1&path=%2Fqpf%2Fyyd%2Ftest%2Fjob.properties
FSCK started by yarn (auth:SIMPLE) from /172.20.1.36 for path /qpf/yyd/test/job.properties at Mon Nov 05 18:39:04 CST 2018
/qpf/yyd/test/job.properties 276 bytes, 1 block(s):  OK
0. BP-824456762-192.168.20.39-1508928616349:blk_1074586437_845778 len=276 Live_repl=3 [/default/172.20.1.36:50010, /default/172.20.1.37:50010, /default/172.20.1.38:50010]Status: HEALTHYTotal size:    276 BTotal dirs:    0Total files:    1Total symlinks:        0Total blocks (validated):    1 (avg. block size 276 B)Minimally replicated blocks:    1 (100.0 %)Over-replicated blocks:    0 (0.0 %)Under-replicated blocks:    0 (0.0 %)Mis-replicated blocks:        0 (0.0 %)Default replication factor:    3Average block replication:    3.0Corrupt blocks:        0Missing replicas:        0 (0.0 %)Number of data-nodes:        3Number of racks:        1
FSCK ended at Mon Nov 05 18:39:04 CST 2018 in 3 millisecondsThe filesystem under path '/qpf/yyd/test/job.properties' is HEALTHY

> 参数解释

0. 表示block个数;
BP-824456762-192.168.20.39-1508928616349:blk_1074586437_845778表示block id; 
len=276 表示该文件块大小; 
Live_repl=3 表示该block块的副本数; 

3.datanode存储目录说明

current目录:真正存放block数据块文件的地方
tmp目录:这个目录主要临时存放一些正在写入的block数据文件,成功写入完成后这个临时文件就会从tmp目录移动到current目录。

> 其中subdir说明

[yarn@yhml01cs005 ~]$ cd /home/yhml01/dfs/dn/current/BP-824456762-192.168.20.39-1508928616349/current/finalized[yarn@yhml01cs005 finalized]$ ll
total 164
drwxr-xr-x 258 hdfs hdfs 8192 Dec  5  2017 subdir0
drwxr-xr-x 258 hdfs hdfs 8192 Jan  9  2018 subdir1
drwxr-xr-x 258 hdfs hdfs 8192 Feb  8  2018 subdir2[yarn@yhml01cs005 subdir1]$ ll
total 52176
-rw-r--r-- 1 hdfs hdfs   999018 Dec 18  2017 blk_1073824301
-rw-r--r-- 1 hdfs hdfs     7815 Dec 18  2017 blk_1073824301_83516.meta
-rw-r--r-- 1 hdfs hdfs  8042801 Dec 18  2017 blk_1073824302
-rw-r--r-- 1 hdfs hdfs    62843 Dec 18  2017 blk_1073824302_83517.meta
-rw-r--r-- 1 hdfs hdfs  4356708 Dec 18  2017 blk_1073824303
-rw-r--r-- 1 hdfs hdfs    34047 Dec 18  2017 blk_1073824303_83518.meta
-rw-r--r-- 1 hdfs hdfs  1483913 Dec 18  2017 blk_1073824304
-rw-r--r-- 1 hdfs hdfs    11603 Dec 18  2017 blk_1073824304_83519.meta
-rw-r--r-- 1 hdfs hdfs  8042801 Dec 18  2017 blk_1073824305

可以看到这个目录主要存放了block数据文件,block数据文件的命名规则是blk_$BLOCKID$,还有就是block文件的元数据文件,元数据文件的命名规则是:blk_$BLOCKID$_$时间戳$,同时大家可以看到很多累似subdir00命名的文件夹,这些文件夹其中存放的也是block数据文件及其元数据文件,hadoop规定每个目录存放的block数据文件个数是有限制的,达到限制之后就会新建sub子目录进行存放,这些sub子目录包括current目录,都会和一个FSDir对象对应。

ps:机器不同配置的目录不同(dfs.data.dir, dfs.datanode.data.dir配置)

磁盘清理维护

一、清理目录
1、执行sudo -u hdfs hadoop fs -du -h /
查询hdfs中各目录的占用的空间,进入占用最多的目录中(/tmp目录等)
2、找到目录/tmp/repay_prpjpolicypayment占用了大量空间
3、执行hdfs dfs -rm -r /tmp/repay_prpjpolicypayment删除此目录下的文件夹
4、删除的文件会被保存到/user/hdfs/.Trash,清空回收站即可

二、清空回收站
1.由于HDFS有回收站,删除文件会先放到回收站里边,如果着急释放空间,需要清理HDFS回收站
2、在删除HDFS文件时,可以使用命令:
hdfs dfs -rm -skipTrash /tmp/repay_prpjpolicypayment,文件就直接被删除,不会进入回收站(永久删除,无法恢复数据)
3、清空回收站命令:
hdfs dfs -expunge (回收站不会立即被清理,而是先Created trash checkpoint: /user/hdfs/.Trash/230309135102。显示的是一分钟后清除。)

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

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

相关文章

03_使用API_系统与数学工具

数学工具 Math 代表数学&#xff0c;是一个工具类&#xff0c;里面提供的都是对数据进行操作的一些静态方法 public class Test {public static void main(String[] args) {// 1. Math.abs() : 取绝对值System.out.println(Math.abs(-3.14)); // >>> 3.14// 2. Ma…

Centos7使用rpm安装mysql 5.7.43

Centos7使用rpm安装mysql 5.7.43 1、下载rpm包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar2、解压并安装 tar xf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar yum -y install mysql-*3、按需修改mysql配置 #注意&a…

Django框架环境的搭建(图文详解)

目录 day01 Web框架和Django基础 1.web框架底层 1.1 网络通信​编辑 1.2 常见软件架构 1.3 手撸web框架 2.web框架 2.1 wsgiref 2.2 werkzeug 2.3 各框架的区别 3.快速上手django框架 3.1 安装 3.2 命令行 3.3 Pycharm 4.虚拟环境 4.1 创建虚拟环境 - 命令行 4…

7.华为OD技术面手撕代码实录:判断ip地址

判断ip地址 编写一个函数来验证输入的字符串是否是有效的 Pv4Q 或IPv6 地址。IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0-255,用(“.”)分割。比如,172.16.254.1: 同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6…

页面添加水印效果实现

页面效果&#xff1a; 源代码&#xff1a; <div id"water-wrapper"></div> <div><div>111111111111111111111111111111111111111111111111111111111111111111111111111111111111</div><div>1111111111111111111111111111111111…

电线电缆行业生产管理怎么数字化?

行业介绍 随着市场环境的变化和现代生产管理理念的不断更新&#xff0c;电缆的生产模式也在发生转变&#xff0c;批量小&#xff0c;规格多&#xff0c;交期短的新型制造需求逐年上升&#xff0c;所以企业车间管理的重要性越发凸显&#xff0c;作为企业良性运营的关键&#xf…

Python学习:常用数据结构

Python DataStructure 一、数组(array)二、双向链表(linkedlist)三、栈(stack)四、队列(queue)五、Python中的可变与不可变类型 一、数组(array) class array:def __init__(self, capacity: int):self._data []self._capacity capacitydef __getitem__(self, position: int)…

2023 年 亚太赛 APMCM (A题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 完整内容可以在文章末尾领取&#xff01; 问题1 图像处理&am…

硬核神作|2w字带你拿下Sentinal

目录 Sentinel概述 基本介绍 Sentinel 基本核心概念 Sentinel安装 简单安装启动 启动配置项 SpringCloud简单整合 实战架构 父工程pom文件 teacher-service服务 student-service服务 测试 整合Sentinel SpringCloud微服务保护方案解读 服务雪崩定义 问题的产生 …

AIGC重塑教育:AI大模型驱动的教育变革与实践

这次&#xff0c;狼真的来了。 AI正迅猛地改变着我们的生活。 根据高盛发布的一份报告&#xff0c;AI有可能取代3亿个全职工作岗位&#xff0c;影响全球18%的工作岗位。在欧美&#xff0c;或许四分之一的工作可以用AI完成。另一份Statista的报告预测&#xff0c;仅2023年&#…

字节码指令分类

字节码指令大致分为九类&#xff1a; 一&#xff1a;加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输 二&#xff1a;算术指令用于对两个操作数栈上的值进行某种特定运算&#xff0c;并把结果重新存入到操作栈顶。运算指令可以分为两种&#xff1a;对整…

VivadoAndTcl: eval

用于拼接执行多个命令。后面可以接一个或者多个参数&#xff0c;如果是一个参数&#xff0c;则把这个参数当做命令来执行&#xff0c;如果是多个参数&#xff0c;则将多个参数用concat命令连接起来后再执行。 举例如下&#xff1a; # 一个参数的情况 set do {set var0 {hello…

【Linux】make/Makefile 进度条小程序

目录 一&#xff0c;认识 make/makefile 二&#xff0c;实例代码 1&#xff0c;依赖关系 2&#xff0c;原理 3&#xff0c;项目清理 4&#xff0c;测试讲解 三&#xff0c;Linux第一个小程序&#xff0d;进度条 game.h game.c test.c 程序详解 一&#xff0c;认识 m…

教你如何将Web项目部署到Linux中

文章目录 前言0. 什么是部署1. 调整代码达成一致2. 数据库建表3. 构建项目并打包4. 拷贝到 Tomcat 中5. 效果总结 前言 在我们完成了一个Web项目后, 我们该怎样将项目部署到 Linux 系统中呢? 本文就来简单讲解一下. 文章已部署本人的博客系统代码展开讲解. 关注收藏, 开始学…

NeurIPS 2023 | RGIB:对抗双边图噪声的鲁棒图学习

▐ 摘要 链接预测[1,2]是图学习的一种基础任务&#xff0c;用于判断图中的两个节点是否可能相连&#xff0c;被广泛应用于药物发现、知识图谱补全和在线问答等实际场景。尽管图神经网络&#xff08;Graph Neural Network&#xff0c;GNN&#xff09;在该问题的性能上取得了显著…

机器学习的概念和类型

1、人工智能、机器学习、深度学习之间的关系 人工智能&#xff08;AI&#xff09;是广泛的概念&#xff0c;指赋予计算机智能特性。机器学习&#xff08;ML&#xff09;是AI的一个分支&#xff0c;是指通过计算机学习和改进性能。深度学习&#xff08;DL&#xff09;是ML的一类…

搭个网页应用,让ChatGPT帮我写SQL

大家好&#xff0c;我是凌览。 开门见山&#xff0c;我搭了一个网页应用名字叫sql-translate。访问链接挂在我的个人博客(https://linglan01.cn/about)导航栏&#xff0c;也可以访问https://www.linglan01.cn/c/sql-translate/直达sql-translate。 它的主要功能有&#xff1a;…

第95步 深度学习图像目标检测:Faster R-CNN建模

基于WIN10的64位系统演示 一、写在前面 本期开始&#xff0c;我们学习深度学习图像目标检测系列。 深度学习图像目标检测是计算机视觉领域的一个重要子领域&#xff0c;它的核心目标是利用深度学习模型来识别并定位图像中的特定目标。这些目标可以是物体、人、动物或其他可识…

Docker Swarm总结(1/3)

目录 1、swarm 理论基础 1.1 简介 1.2 节点架构 1.3 服务架构 1.4 服务部署模式 2、swarm 集群搭建 2.1 需求 ​2.2 克隆主机 2.3 启动5个docker宿主机 2.4 查看 swarm 激活状态 2.5 关闭防火墙 2.6 swarm 初始化 2.7 添加 worker 节点 2.8 添加 manager 节点 3、…

Mybatis-Plus3.0默认主键策略导致自动生成19位长度主键id的坑

码字不易&#xff0c;如果对您有用&#xff0c;求各位看官点赞关注~ 原创/朱季谦 目前的Mybatis-Plus版本是3.0&#xff0c;至于最新版本是否已经没有这个问题&#xff0c;后续再考虑研究。 某天检查一位离职同事写的代码&#xff0c;发现其对应表虽然设置了AUTO_INCREMENT自…