Hadoop HDFS

type
Post
status
Published
summary
Hadoop HDFS (Hadoop Distributed File System) 是一个分布式文件系统,设计用于在大型数据集上进行高吞吐量的数据存储和访问。它是 Hadoop 生态系统的重要组成部分,支持大规模数据处理和分析。 为什么需要分布式存储? 数据量太大,单机存储能力有上限,需要靠数量来解决问题 数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的综合提升。 分布式组合在一起可以达到1+1>2的效果
slug
bigdata-hadoop-hdfs
date
Jul 8, 2024
tags
Hadoop
大数据
HDFS
category
大数据
password
icon
URL
Property
Jul 12, 2024 01:41 AM

HDFS概述

Hadoop HDFS (Hadoop Distributed File System) 是一个分布式文件系统,设计用于在大型数据集上进行高吞吐量的数据存储和访问。它是 Hadoop 生态系统的重要组成部分,支持大规模数据处理和分析。
为什么需要分布式存储?
数据量太大,单机存储能力有上限,需要靠数量来解决问题 数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的综合提升。 分布式组合在一起可以达到1+1>2的效果

HDFS 的关键特性

  1. 高容错性:HDFS 通过数据块的冗余存储实现高容错性。每个数据块会被复制到多个节点上,以确保即使某个节点失效,数据也不会丢失。
  1. 高吞吐量:HDFS 优化了大数据的批量处理,通过数据的流式访问和大文件的顺序读取实现高吞吐量。
  1. 可扩展性:HDFS 可以通过添加更多的节点来扩展存储和计算能力。
  1. 流式数据访问:HDFS 适合一次写入、多次读取的访问模式,优化了批处理作业的性能。

HDFS的架构模式和基本组件

HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:
 
notion imagenotion image
NameNode(主节点):HDFS系统的主角色,是一个独立的进程;
  • 负责管理文件系统的元数据(如文件名、目录结构、文件块位置等)
  • 负责管理HDFS整个文件系统
  • 负责管理DataNode
DataNode(工作节点):HDFS系统的从角色,是一个独立进程;
  • 主要负责数据的存储,即存入数据和取出数据
  • DataNode 会定期向 NameNode 报告存储情况和数据块的状态。
SecondaryNameNode:NameNode的辅助,是一个独立进程;
  • 定期合并 NameNode 的编辑日志和元数据快照,以减轻 NameNode 的负载。

HDFS原理

数据存储原理

  • 当客户端将数据写入HDFS时,数据首先被切分成多个固定大小的块(默认64MB或128MB)。
    • 💡
      设置快大小:
      • 可以在hdfs-site.xml中配置如下属性:
        • <property> <name>dfs.blocksize</name> <value>268435456</value> <description>设置HDFS块大小,单位是b</description> </property>
  • 为了提高容错性,HDFS会将每个数据块复制到多个节点上,默认情况下每个数据块会被复制三次(可配置)
    • 💡
      设置副本数量:
      • 在上传时,put 命令中可以设置(临时设置)
        • hadoop fs -D dfs.replication=2 -put test.txt /tmp/
      • 可以在hdfs-site.xml中配置如下属性:
        • <property> <name>dfs.replication</name> <value>3</value> </property>
      • 对于已经存在HDFS的文件
        • hadoop fs -setrep [-R] 2 path # -R选项可选,使用-R表示对子目录也生效。
  • NameNode会决定这些数据块应该存储在哪些DataNode上,并返回存储计划。
  • 客户端按照存储计划将数据块写入指定的DataNode,每个数据块在写入时会自动创建其副本并分布到其他DataNode上。
  • 当DataNode发生故障时,NameNode能够检测到并在其他节点上重新复制失效的数据块,确保数据的冗余度和可靠性。NameNode也会定期检查数据块的健康状况,并执行必要的修复操作。
  • HDFS使用心跳机制和块报告机制来管理数据块的副本。DataNode定期向NameNode发送心跳信号和块报告,告知其当前存储的数据块信息。NameNode根据这些信息监控整个集群的健康状态,并在必要时执行数据块的再平衡或复制操作。

数据读写流程

数据写入

1. 客户端向NameNode发起请求 2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址 3. 客户端向指定的DataNode发送数据包 4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode 5. 如上图,DataNode1复制给DataNode2,然后基于DataNode2复制给Datanode3和DataNode4 6. 写入完成客户端通知NameNode,NameNode做元数据记录工作
notion imagenotion image
关键信息点: NameNode不负责数据写入,只负责元数据记录和权限审批 客户端直接向1台DataNode写数据,这个DataNode一般是离客户端最近(网络距离)的那一个 数据块副本的复制工作,由DataNode之间自行完成(构建一个PipLine,按顺序复制分发,如图1给2, 2给3和4)

数据读取

1、客户端向NameNode申请读取某文件 2、 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表 3、客户端拿到block列表后自行寻找DataNode读取即可
关键点: 1、数据同样不通过NameNode提供 2、NameNode提供的block列表,会基于网络距离计算尽量提供离客户端最近的;这是因为1个block有3份,会尽量找离客户端最近的那一份让其读取

数据管理原理

1. 元数据存储

NameNode存储所有文件系统的元数据,包括:
  • 文件和目录的层次结构(文件系统的命名空间)。
  • 每个文件的块列表以及每个块的位置。
  • 每个块的副本信息,包括哪些DataNode存储了该块的副本。

2. 数据块分配

当客户端请求写入文件时:
  • 块分配:NameNode负责分配数据块。当一个文件被创建或扩展时,NameNode会分配新的块ID,并决定将这些块存储在哪些DataNode上。
  • 副本存储:根据配置的副本数,NameNode会选择适当的DataNode来存储每个块的副本,通常会考虑数据节点的负载和数据分布情况,确保副本分布在不同的机架上以提高容错性。

3. 数据块位置管理

NameNode通过以下方式管理和维护数据块的位置:
  • 心跳机制:每个DataNode定期向NameNode发送心跳信号,报告其状态和所存储的块的信息。心跳信号的频率通常为每3秒一次。
  • 块报告:DataNode定期(通常每小时一次)向NameNode发送块报告,详细列出其存储的所有块。这使NameNode可以了解每个数据块的存储位置和副本情况。

4. 容错管理

为了保证数据的可靠性和高可用性,NameNode进行以下容错管理:
  • 副本监控:NameNode持续监控每个数据块的副本数。如果发现某个块的副本数低于配置的副本数(例如某个DataNode失效),NameNode会安排在其他健康的DataNode上创建新的副本。
  • 再平衡:NameNode会定期检查数据块的分布情况,如果发现某些DataNode负载过高或某些块的副本分布不均匀,会安排再平衡操作,将数据块从负载高的DataNode移动到负载低的DataNode上。
  • 失效检测:如果NameNode在一段时间内没有收到某个DataNode的心跳信号,会将该DataNode标记为失效,并启动数据块的再复制操作,以确保数据块的副本数达到要求。

5. 维护文件系统一致性

NameNode在以下情况下会更新元数据:
  • 文件创建、删除、重命名:NameNode会更新文件系统的命名空间元数据,确保文件和目录结构的正确性。
  • 数据块读写:在客户端读写数据时,NameNode会动态更新数据块的位置和状态,确保元数据的一致性和准确性。

6. Checkpoint和Edits Log

为了防止元数据丢失,NameNode会定期将元数据保存到磁盘:
  • FsImage:文件系统的快照,保存整个文件系统的元数据。
  • Edits Log:记录对文件系统的所有修改操作。当NameNode启动时,会从FsImage加载元数据,并应用Edits Log中的修改操作来恢复最新状态。
  • Secondary NameNode:辅助NameNode定期合并FsImage和Edits Log,生成新的FsImage文件,以减小Edits Log的大小,减少NameNode启动时的恢复时间。

HDFS使用

HDFS环境安装部署

修改配置文件,应用自定义设置
  • cd 进入Hadoop安装包内,通过ls -l命令查看文件夹内部结构,各个文件夹含义如下:
    • bin,存放Hadoop的各类程序(命令) etc,存放Hadoop的配置文件 include,C语言的一些头文件 lib,存放Linux系统的动态链接库(.so文件) libexec,存放配置Hadoop系统的脚本文件(.sh和.cmd) licenses-binary,存放许可证文件 sbin,管理员程序(super bin) share,存放二进制源码(Java jar包)
  • 需要修改的配置文件主要是 hadoop/etc/hadoop 文件夹内的文件
    • workers: 配置从节点(DataNode)有哪些 hadoop-env.sh: 配置Hadoop的相关环境变量 core-site.xml: Hadoop核心配置文件 hdfs-site.xml: HDFS核心配置文件
  • 配置workers文件
    • 将从节点的主机名添加进去,一个占一行
      anjhon anjhon2 anjhon3
  • 配置hadoop-env.sh文件
    • # 增加配以下置项,通过记录这些环境变量,来指明上述运行时的重要信息 export JAVA_HOME=/export/server/jdk # JAVA_HOME,指明JDK环境的位置在哪 export HADOOP_HOME=/export/server/hadoop # HADOOP_HOME,指明Hadoop安装位置 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # HADOOP_CONF_DIR,指明Hadoop配置文件目录位置 export HADOOP_LOG_DIR=$HADOOP_HOME/logs # HADOOP_LOG_DIR,指明Hadoop运行日志目录位置
  • 配置core-site.xml文件(在<configuration>标签之间增加配置)
    • <configuration> <!-- 配置项名称:fs.defaultFS 含义:指定默认的文件系统URI,通常用于Hadoop文件系统(HDFS)。 参数:hdfs://node1:8020(HDFS的URI,node1为主机名,8020为端口号) --> <property> <name>fs.defaultFS</name> <value>hdfs://anjhon:8020</value> </property> <!-- 配置项名称:io.file.buffer.size 含义:指定文件系统IO操作的缓冲区大小(以字节为单位)。 参数:131072(缓冲区大小为131072字节,即128KB) --> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <!-- 配置项名称:fs.trash.interval 含义:指定HDFS回收站的清空间隔时间(以分钟为单位)。 参数:1440(回收站清空间隔为1440分钟,即一天) --> <property> <name>fs.trash.interval</name> <value>1440</value> </property> <!-- 配置项名称:fs.trash.checkpoint.interval 含义:指定HDFS回收站检查点创建的间隔时间(以分钟为单位)。 参数:120(回收站检查点间隔为120分钟) --> <property> <name>fs.trash.checkpoint.interval</name> <value>120</value> </property> <!-- 配置项名称:hadoop.proxyuser.hadoop.hosts 含义:指定允许代理用户hadoop代理的主机列表。 参数:*(允许所有主机) --> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <!-- 配置项名称:hadoop.proxyuser.hadoop.groups 含义:指定允许代理用户hadoop代理的用户组列表。 参数:*(允许所有用户组) --> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> </configuration>
    • hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议)
    • 表明DataNode将和node1的8020端口通讯,node1是NameNode所在机器
    • 此配置固定了node1必须启动NameNode进程
  • 配置hdfs-site.xml文件(在<configuration>标签之间添加如下配置)
    • <configuration> <!-- 配置项名称:dfs.datanode.data.dir.perm 含义:指定数据节点数据目录的权限设置。 参数:700(只有所有者具有读、写和执行权限) --> <property> <name>dfs.datanode.data.dir.perm</name> <value>700</value> </property> <!-- 配置项名称:dfs.namenode.name.dir 含义:指定NameNode在本地文件系统上存储命名空间和事务日志的路径。 参数:/data/nn(NameNode数据存储路径) --> <property> <name>dfs.namenode.name.dir</name> <value>/data/nn</value> </property> <!-- 配置项名称:dfs.namenode.hosts 含义:允许的DataNode列表,用于指定哪些节点可以作为数据节点。 参数:anjhon,anjhon2,anjhon3(允许的DataNode主机名) --> <property> <name>dfs.namenode.hosts</name> <value>anjhon,anjhon2,anjhon3</value> </property> <!-- 配置项名称:dfs.blocksize 含义:指定HDFS中每个数据块的大小。 参数:268435456(256 MB,数据块大小) --> <property> <name>dfs.blocksize</name> <value>268435456</value> </property> <!-- 配置项名称:dfs.namenode.handler.count 含义:指定NameNode处理请求的处理程序数量。 参数:100(同时处理的请求数量) --> <property> <name>dfs.namenode.handler.count</name> <value>100</value> </property> <!-- 配置项名称:dfs.datanode.data.dir 含义:指定DataNode存储数据块的目录。 参数:/data/dn(DataNode数据存储路径) --> <property> <name>dfs.datanode.data.dir</name> <value>/data/dn</value> </property> </configuration>

HDFS启动方法

方法一:内置的一键启停脚本(在主节点执行
start-dfs.sh stop-dfs.sh
  • $HADOOP_HOME/sbin/start-dfs.sh,一键启动HDFS集群
    • 执行原理:
      • 在执行此脚本的机器上,启动SecondaryNameNode
      • 读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,启动NameNode
      • 读取workers内容,确认DataNode所在机器,启动全部DataNode
  • $HADOOP_HOME/sbin/stop-dfs.sh,一键关闭HDFS集群
    • 执行原理:
      • 在执行此脚本的机器上,关闭SecondaryNameNode
      • 读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,关闭NameNode
      • 读取workers内容,确认DataNode所在机器,关闭全部NameNode
方法二:单独控制节点服务的启停(在对应的主机上)
  • $HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停
    • 用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
  • $HADOOP_HOME/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停
    • 用法:hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)
    • hdfs --daemon start namenode # 开启 namenode 服务 hdfs --daemon start secondarynamenode # 开启 secondarynamenode 服务 hdfs --daemon start datanode # 开启 datanode 服务 hdfs --daemon stop namenode # 停止 namenode 服务 hdfs --daemon stop secondarynamenode # 停止 secondarynamenode 服务 hdfs --daemon stop datanode # 停止 datanode 服务

HDFS文件系统操作

HDFS 的 文件系统命名空间 的层次结构与大多数文件系统类似 (如 Linux), 支持目录和文件的创建、移动、删除和重命名等操作,支持配置用户和访问权限,但不支持硬链接和软连接。NameNode 负责维护文件系统名称空间,记录对名称空间或其属性的任何更改。

基础操作命令

HDFS同Linux系统一样,均是以/作为根目录的组织形式;那如何区分 Linux 文件路径和 hdfs 文件路径呢?通过协议头区分。
Linux:file:///usr/local/hello.txt HDFS:hdfs://node1:8020/usr/local/hello.txt
一般情况下系统会自动识别到底是 Linux 的路径还是 HDFS 路径。
 
HDFS文件系统的操作命令,Hadoop提供了2套命令体系,两者在文件系统操作上,用法完全一致;某些特殊操作需要选择hadoop命令或hdfs命令
  • hadoop命令(老版本用法),用法:hadoop fs [generic options]
  • hdfs命令(新版本用法),用法:hdfs dfs [generic options]
 
常用命令
hdfs dfs -mkdir -p /itheima/bigdata # 创建文件夹 hdfs dfs -ls / # 查看路径文件 hdfs dfs -ls -t / # 查看路径文件,按修改时间排序 hdfs dfs -ls -h / # 查看路径文件,以人类可读的格式显示文件大小 hdfs dfs -ls -R / # 查看路径文件,递归列出子目录 hdfs dfs -cat /test.txt # 查看文件内容 hdfs dfs -cat /test.txt | more # 查看文件内容,不全部显示, hdfs dfs -cp /test.txt /home # 复制文件;两个路径都是 hdfs 中的路径,hdfs 命令会自动识别 hdfs dfs -cp -f /test.txt /home # 复制文件,强制覆盖 hdfs dfs -mv /words.txt /home/words.txt # 移动文件 hdfs dfs -mv /words.txt /home/words2.txt # 移动文件,并重命名 hadoop fs -du /home # 统计当前目录下各文件大小 hadoop fs -du -h /home # 统计当前目录下各文件大小,以人类可读的方式 hadoop fs -df -h / # 统计文件系统的可用空间信息
文件检测
语法:hadoop fs -test - [defsz] URI 选项: -d:如果路径是目录,返回 0。 -e:如果路径存在,则返回 0。 -f:如果路径是文件,则返回 0。 -s:如果路径不为空,则返回 0。 -r:如果路径存在且授予读权限,则返回 0。 -w:如果路径存在且授予写入权限,则返回 0。 -z:如果文件长度为零,则返回 0。 示例: hadoop fs -test -e filename
删除文件
语法:hdfs dfs -rm [选项] [参数] [选项]: -r: 递归删除目录及其所有子目录和文件 -skipTrash: 直接删除文件,而不将其移入回收站 [参数]: 路径:要删除的HDFS文件或目录的路径 示例: hdfs dfs -rm /user/hadoop/file.txt # 删除HDFS中的文件file.txt hdfs dfs -rm -r /user/hadoop/directory # 递归删除HDFS中的目录directory及其内容 hdfs dfs -rm -skipTrash /user/hadoop/file.txt # 直接删除HDFS中的文件file.txt,不移入回收站
上传文件
hdfs dfs -put命令用于将 Linux 的文件或目录上传到HDFS(Hadoop分布式文件系统)中。
语法: hdfs dfs -put [参数] <本地源路径> <HDFS目标路径> 参数: -d:将目录递归上传到HDFS。如果目标目录不存在,将会创建它。 -f:强制覆盖目标文件。如果目标文件已经存在,将会被覆盖。 -p:保留文件的权限、时间戳等元数据。 -t:指定传输的线程数。默认情况下,HDFS会自动选择最优的线程数。 -v:显示详细信息。用于调试或查看详细的操作过程。 -h:显示帮助信息。 -l:显示进度信息。 例子: hdfs dfs -put example.txt /user/hadoop # 将本地文件example.txt上传到HDFS的/user/hadoop目录 hdfs dfs -put data /user/hadoop # 将本地目录data上传到HDFS的/user/hadoop目录 注意: - 如果目标路径已经存在且是一个目录,文件将被上传到该目录中。 - 如果目标路径已经存在且是一个文件,上传操作将失败。
下载文件
hdfs dfs -get命令用于将HDFS的文件或目录下载到 Linux 中。
语法: hdfs dfs -get [参数] <HDFS目标路径> <本地源路径> 参数: -f:强制覆盖目标文件。如果目标文件已经存在,将会被覆盖。 -p:保留文件的权限、时间戳等元数据。 例子: hdfs dfs -get /test.txt /home/hadoop/
内容追加
hdfs 中的文件内容无法直接进行修改
语法: hdfs dfs -appendToFile <本地文件> <目标HDFS文件> 注意: - 如果目标文件不存在,则会自动新建 示例: hdfs dfs -appendToFile localfile.txt /user/hadoop/hdfsfile.txt hdfs dfs -appendToFile /home/hadoop/append.txt /words.txt
权限管理
HDFS 中权限控制的逻辑与 Linux 中大致相同,HDFS 中的超级用户是启动集群的那个用户。
hdfs dfs -chown [-R] root:root /xxx.txt # 更改文件所有者和用户组;-R,对文件夹内的全部内容应用同样的操作 hdfs dfs -chown -R hadoop:supergroup /data /home /output /tmp hdfs dfs -chmod [-R] 777 /xxx.txt # 更改文件权限

WEBUI中操作文件系统

在服务器上开启服务,在浏览器中输入主节点的 IP 和端口进入 webUI 界面
notion imagenotion image
网页中的权限受限(是用匿名用户登陆的),只有只读权限;如果需要以特权用户在浏览器中进行操作,需要配置如下内容到core-site.xml并重启集群
<property> <name>hadoop.http.staticuser.user</name> <value>hadoop</value> </property>
但是,不推荐这样做;HDFS WEBUI,只读权限挺好的,简单浏览即可;如果给与高权限,会有很大的安全问题,造成数据泄露或丢失

文件系统的健康状况检查

hdfs fsck 命令
hdfs fsck可以检查指定路径是否正常
hdfs fsck /test.txt -files -blocks -locations -files: 显示文件的详细信息。 -blocks: 显示文件的块信息。 -locations: 显示每个数据块的存储位置。
输出内容
Connecting to namenode via http://anjhon:9870/fsck?ugi=hadoop&files=1&blocks=1&locations=1&path=%2Ftest3.txt FSCK started by hadoop (auth:SIMPLE) from /10.211.55.6 for path /test3.txt at Mon Jul 08 16:36:21 CST 2024 /test3.txt 39 bytes, replicated: replication=1, 1 block(s): OK 0. BP-1284200626-10.211.55.6-1720089312422:blk_1073741842_1019 len=39 Live_repl=1 [DatanodeInfoWithStorage[10.211.55.8:9866,DS-0b1aa985-d2c1-409c-822c-fe69053d3767,DISK]] Status: HEALTHY Number of data-nodes: 3 Number of racks: 1 Total dirs: 0 Total symlinks: 0 Replicated Blocks: Total size: 39 B Total files: 1 Total blocks (validated): 1 (avg. block size 39 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: 1.0 Missing blocks: 0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Blocks queued for replication: 0 Erasure Coded Block Groups: Total size: 0 B Total files: 0 Total block groups (validated): 0 Minimally erasure-coded block groups: 0 Over-erasure-coded block groups: 0 Under-erasure-coded block groups: 0 Unsatisfactory placement block groups: 0 Average block group size: 0.0 Missing block groups: 0 Corrupt block groups: 0 Missing internal blocks: 0 Blocks queued for replication: 0 FSCK ended at Mon Jul 08 16:36:21 CST 2024 in 3 milliseconds The filesystem under path '/test3.txt' is HEALTHY
 
输出解读
  • 命令执行信息
    • Connecting to namenode via http://anjhon:9870/fsck?ugi=hadoop&files=1&blocks=1&locations=1&path=%2Ftest3.txt FSCK started by hadoop (auth:SIMPLE) from /10.211.55.6 for path /test3.txt at Mon Jul 08 16:36:21 CST 2024
    • 连接信息:连接到NameNode,通过URL http://anjhon:9870/fsck 执行检查。
    • 用户和路径:由用户hadoop从IP地址/10.211.55.6对路径/test3.txt进行检查,时间为2024年7月8日16:36:21 CST。
  • 文件信息
    • /test3.txt 39 bytes, replicated: replication=1, 1 block(s): OK 0. BP-1284200626-10.211.55.6-1720089312422:blk_1073741842_1019 len=39 Live_repl=1 [DatanodeInfoWithStorage[10.211.55.8:9866,DS-0b1aa985-d2c1-409c-822c-fe69053d3767,DISK]]
    • 文件/test3.txt大小为39字节,有1个块,副本数为1(replication=1)。
    • 块ID为blk_1073741842_1019,长度为39字节,存活副本数为1(Live_repl=1)。
    • 块存储位置为DatanodeInfoWithStorage[10.211.55.8:9866,DS-0b1aa985-d2c1-409c-822c-fe69053d3767,DISK],即存储在数据节点10.211.55.8的端口9866上,存储介质为磁盘(DISK)。
  • 文件系统健康状态
    • Status: HEALTHY
    • 状态:文件系统状态为健康(HEALTHY)。
  • 汇总信息
    • Number of data-nodes: 3 Number of racks: 1 Total dirs: 0 Total symlinks: 0
    • 数据节点和机架
      • 数据节点数为3。
      • 机架数为1。
    • 目录和符号链接
      • 总目录数为0。
      • 总符号链接数为0。
  • 复制块信息
    • Replicated Blocks: Total size: 39 B Total files: 1 Total blocks (validated): 1 (avg. block size 39 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: 1.0 Missing blocks: 0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Blocks queued for replication: 0
    • 总大小:39字节。
    • 总文件数:1。
    • 总块数:1,平均块大小39字节。
    • 最小复制块数:1,占100%。
    • 过度复制块数:0,占0%。
    • 不足复制块数:0,占0%。
    • 复制错误块数:0,占0%。
    • 默认副本数:3。
    • 平均块副本数:1.0。
    • 丢失块数:0。
    • 损坏块数:0。
    • 缺失副本数:0,占0%。
    • 等待复制的块数:0。
  • 纠删码块组信息
    • Erasure Coded Block Groups: Total size: 0 B Total files: 0 Total block groups (validated): 0 Minimally erasure-coded block groups: 0 Over-erasure-coded block groups: 0 Under-erasure-coded block groups: 0 Unsatisfactory placement block groups: 0 Average block group size: 0.0 Missing block groups: 0 Corrupt block groups: 0 Missing internal blocks: 0 Blocks queued for replication: 0
    • 总大小:0字节。
    • 总文件数:0。
    • 总块组数:0。
    • 最小纠删码块组数:0。
    • 过度纠删码块组数:0。
    • 不足纠删码块组数:0。
    • 放置不满意块组数:0。
    • 平均块组大小:0.0。
    • 丢失块组数:0。
    • 损坏块组数:0。
    • 缺失内部块数:0。
    • 等待复制的块数:0。
  • 命令结束信息
    • FSCK ended at Mon Jul 08 16:36:21 CST 2024 in 3 milliseconds
    • 命令结束时间:命令在2024年7月8日16:36:21 CST结束,用时3毫秒。
  • 文件系统健康总结
    • The filesystem under path '/test3.txt' is HEALTHY
    • 健康状态总结:路径/test3.txt下的文件系统状态为健康(HEALTHY)。
If you have any questions, please contact me.