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

这篇具有很好参考价值的文章主要介绍了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 VERSION
 
namespaceID=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.xml

hdfs 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: HEALTHY
 Total size:    276 B
 Total dirs:    0
 Total files:    1
 Total symlinks:        0
 Total 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:    3
 Average block replication:    3.0
 Corrupt blocks:        0
 Missing replicas:        0 (0.0 %)
 Number of data-nodes:        3
 Number of racks:        1
FSCK ended at Mon Nov 05 18:39:04 CST 2018 in 3 milliseconds
 
 
The 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。显示的是一分钟后清除。)

按文件时间删除

文件按时间排序
ls -l --time-style=+%s | awk '{print $6,$7,$8,$9}' | sort -r -k1 | awk '{print $2}'

传入xargs删除
hdfs dfs -ls /tmp/datawarehouse/ | sort -r -k6,7 | head - 50 | awk '{print $6}' | xargs hdfs dfs -rm -r

current='2023-12-03'
hdfs dfs -ls /user/jmkx_data/hive_db/jmkx_data.db/ 
| awk -v current=$current '{if($6 > current ){print $8}}' 
| xargs hdfs dfs -rm -r -skipTrash


1.查看hdfs上文件夹下文件的个数
hadoop fs -cat /tmp/mc/'`default`'.db/stg_mh_lpdyrmyy_radinfo_pacsimages_mc_temp_mc_temp/* | gunzip -c | wc -l

2.查看hdfs上文件夹下文件的大小
hadoop fs -count -h /tmp/mc/'`default`'.db/stg_mh_lpdyrmyy_radinfo_pacsimages_mc_temp_mc_temp/

3.查看hdfs文件夹下文件按时间顺序排序
[bque@sdw3 ~]$ hadoop fs -ls /tmp/mc/'`default`'.db/stg_mh_lpdyrmyy_radinfo_pacsimages_mc_temp_mc_temp/ | sort -r -k6,7
-r决定正序逆序

阿里云EMR清理历史HDFS数据

      日志文件:

    Spark History Server:spark-history-server.log和spark-spark-org.apache.spark.deploy.history.HistoryServer*.out

     Spark Thrift Server:spark-thrift-server.log和spark-spark-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2*.out
Spark History Server
出现节点磁盘写满,检查后发现HDFS上的spark-history目录下有大量的数据

       在EMR控制台Spark服务配置页面的spark-defaults.conf页签,修改spark.history.fs.cleaner.enabled的参数值为true,然后重启History Server服务。
您也可以手动清理HDFS服务/spark-history目录下最老的一部分作业数据。文章来源地址https://www.toymoban.com/news/detail-826060.html

到了这里,关于HDFS元数据管理/磁盘清理维护的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【 Linux命令行与Shell脚本编程】第四章 进程管理 ,磁盘统计信息,挂载新磁盘,数据排序,数据归档

    第四章 更多命令 进程管理 磁盘统计信息 挂载新磁盘 数据排序 数据归档 4.1,监测程序 4.1.1,ps 探查进程 4.1.2,top 实时监测进程 4.1.3,kill pkill 结束进程 1,kill 命令 2,pkill 命令 4.2,检测磁盘空间 4.2.1,mount umount挂载存储设备 1. mount 命令 其他选项 2,umount 命令 4.2.2, df 命令 4.2.3, du 命令

    2023年04月24日
    浏览(50)
  • Docker网络(网络通信),资源控制(CPU优化,内存优化,磁盘优化),数据管理(数据卷,端口映射,容器互联)

    目录 docker网络 网络实现原理 网络实现实例 网络模式 查看Docker中的网络列表: 指定容器网络模式 模式详解 Host模式(主机模式): Container模式(容器模式): None模式(无网络模式): Bridge模式(桥接模式): 自定义网络: cpu优化概述 1. 资源限制: 2. CPU 实时调度策略:

    2024年01月16日
    浏览(80)
  • 利用Hadoop进行数据湖构建与管理

    利用Hadoop进行数据湖构建与管理 一、引言 在大数据的时代,数据的增长速度已经远超过了传统的数据处理和存储能力。为了解决这个问题,数据湖的概念应运而生。数据湖是一个集中式的存储和处理平台,可以存储各种类型的数据,而不需要事先进行结构化的处理。Hadoop,

    2024年03月12日
    浏览(98)
  • 【大数据】大数据 Hadoop 管理工具 Apache Ambari(HDP)

    Apache Ambari 是 Hortonworks 贡献给Apache开源社区的顶级项目,它是一个基于web的工具,用于安装、配置、管理和监视 Hadoop 集群。 Ambari 目前已支持大多数 Hadoop 组件,包括 HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop 和 Hcatalog 等。 Apache Ambari 支持 HDFS、MapReduce、Hive、Pig、Hbase、Z

    2024年02月14日
    浏览(47)
  • 【大数据毕设】基于Hadoop的音乐管理系统论文(三)

    博主介绍 : ✌ 全网粉丝6W+,csdn特邀作者、博客专家、大数据领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战 ✌ 🍅 文末获取项目联系,有偿部署 🍅 摘 要 本文基于Hadoop技术,设计并实现了一个名为“酷酷音乐网站

    2024年02月08日
    浏览(42)
  • 大数据:HDFS的Shell操作,进程启动管理,文件系统操作命令,创建文件文件夹,下载上传,复制移动,删除,展示,追加内容

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月07日
    浏览(64)
  • Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理

    Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理 当您的Windows系统C盘空间告急时,除了深入挖掘并清理隐藏的大文件,如Docker日志外,不要忽视了Windows自带的“磁盘清理”工具。这是一个强大的工具,可以帮助您释放磁盘空间,让系统运行更加流畅。以下是如何结合使

    2024年04月09日
    浏览(54)
  • 【Linux对磁盘进行清理、重建、配置文件系统和挂载,进行系统存储管理调整存储结构】

    继上一篇 【Linux上创建一个LVM卷组,将多个物理卷添加到卷组中使用】 创建一个卷组,并将多个物理卷添加到该卷组中。 在卷组上创建一个逻辑卷,并进行文件系统格式化。 将逻辑卷挂载到指定目录并自动挂载。 扩展逻辑卷的大小,并调整文件系统以适应扩容后的存储空间

    2024年01月22日
    浏览(44)
  • Hadoop学习-6-HDFS权限管理

    HDFS权限管理 认证、授权、审计(/var/log/secure) HDFS权限管理 身份认证,数据访问权限认证 UGO模型:每个文件和目录都与一个owner、group关联 user:文件所有者 group:组内其他成员 other:其他用户组,最低权限 读、写、执行权限 -/d(文件类型)rwx(owner权限)rwx(group权限)rwx(other权限

    2024年02月16日
    浏览(53)
  • Hadoop集群启动后利用Web界面管理HDFS

           Hadoop集群启动后,可以通过自带的浏览器Web界面查看HDFS集群的状态信息,访问IP为NameNode所在服务器的IP地址, hadoop版本为3.0以前访问端口默认为9870 , hadoop版本为3.0以后访问端口默认为50070 。( 下面测试版本为Hadoop3.0以后的 ) 一、利用ifconfig命令查看NameNode所在服

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包