大数据(3) 分布式文件系统HDFS

发布于:2025-06-10 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、分布式文件系统

1.计算机集群的基本架构

        集群中的计算机节点存放在机架上,每个机架可以存放8~64个节点,同一机架上的不同节点之间通过网络互联,多个不同机架之间采用另一级网络或交换机互连。

二、HDFS 定义

        HDFS(Hadoop Distributed File System) 是 Hadoop 核心模块之一,是一个分布式文件系统,专为大规模数据存储和处理而设计,具有高容错性、高吞吐量等特点,适合部署在普通硬件组成的集群上。


三、HDFS 的主要特性

特性 简要描述
高容错性 数据自动备份多份(默认3份),即使某些节点宕机,系统依然可用
高吞吐量 适合一次读写大文件,提高整体数据处理效率
高可扩展性 可通过添加节点横向扩展系统容量
适合大文件 设计初衷是处理 TB 甚至 PB 级的大文件,不适合频繁修改的小文件
一次写入,多次读取 写入过程不可修改,适合日志、大数据分析等场景

四、HDFS 架构组成

HDFS 采用 主从结构,由以下核心组件组成:

1. NameNode(名称节点)【主节点】

  • 存储元数据:如文件路径、权限、每个文件分成多少块、每块在哪些 DataNode 上等

  • 管理文件系统的命名空间

  • 客户端上传、下载文件时,NameNode 负责调度,不直接处理数据

2. DataNode(数据节点)【从节点】

  • 实际存储文件数据块(Block)

  • 每个文件被分成多个 128MB(默认)大小的数据块,分别存放在不同的 DataNode 上

  • 定期向 NameNode 报告存储状态(心跳)


五、NameNode 和 DataNode 的区别

项目 NameNode DataNode
角色 主节点 从节点
职责 存储元数据、调度任务 存储实际文件块,执行读写操作
是否存数据 ❌ 不存文件数据 ✅ 存储实际数据块
数量 通常只有 1 个主 + 1 个备用 可以有多个
故障影响 极大,元数据丢失则文件系统不可用 影响较小,可用副本恢复

六、Secondary NameNode(二级名称节点)

  • 不是主节点的备份!

  • 主要作用:辅助 NameNode 做元数据快照合并(Checkpoint)

  • 避免 NameNode 的edits日志文件无限增长

  • 运行机制:

    • 周期性从 NameNode 拉取fsimage(元数据快照)和edits(操作日志)

    • 合并成新的fsimage,然后传回 NameNode

注意:它不能替代 NameNode,NameNode 宕机后不能自动接管工作。


七、冷热备份

HDFS 提供了以下方式提升系统可用性:

1. 冷备份(Cold Standby)

  • 手动备份 NameNode 元数据文件,如 fsimageedits

  • 一旦主 NameNode 出问题,需要手动恢复数据启动新 NameNode

  • 缺点:恢复慢、人工干预多

2. 热备份(Hot Standby)— 高可用 NameNode(HA)

  • 使用 Zookeeper + JournalNode 机制实现 自动主备切换

  • 两个 NameNode:一个 Active,一个 Standby

  • JournalNode 保存日志,两者保持同步

  • Active NameNode 宕机时,Zookeeper 自动切换 Standby 为新的 Active


八、HDFS 常见命令讲解(基于 Hadoop 3.x+)

使用 HDFS 命令前,一般格式是:

hdfs dfs -[命令] [路径]


1. 目录操作

命令 功能 示例
-mkdir 创建目录 hdfs dfs -mkdir /user/hadoop
-mkdir -p 创建多层目录 hdfs dfs -mkdir -p /user/hadoop/input
-ls 列出目录内容 hdfs dfs -ls /user/hadoop
-ls -R 递归列出目录内容 hdfs dfs -ls -R /user/hadoop
-rmdir 删除空目录 hdfs dfs -rmdir /user/tmp

2. 文件上传下载

命令 功能 示例
-put 上传本地文件到 HDFS hdfs dfs -put ~/file.txt /user/hadoop/
-copyFromLocal 上传(同 put) hdfs dfs -copyFromLocal file.txt /user/hadoop/
-get 下载 HDFS 文件到本地 hdfs dfs -get /user/hadoop/file.txt ~/
-copyToLocal 下载(同 get) hdfs dfs -copyToLocal /user/hadoop/file.txt ~/

3. 文件删除与移动

命令 功能 示例
-rm 删除文件 hdfs dfs -rm /user/hadoop/file.txt
-rm -r 删除目录或非空目录 hdfs dfs -rm -r /user/hadoop/input
-mv 移动或重命名文件 hdfs dfs -mv /user/hadoop/file.txt /user/hadoop/file1.txt

4. 查看文件内容

命令 功能 示例
-cat 查看文件全部内容 hdfs dfs -cat /user/hadoop/file.txt
-tail 查看文件最后几行 hdfs dfs -tail /user/hadoop/file.txt
-head 查看文件前若干字节 hdfs dfs -head /user/hadoop/file.txt
-text 将 SequenceFile 等转为文本查看 hdfs dfs -text /user/hadoop/seqfile

5. 其他常用命令

命令 功能 示例
-du 查看文件/目录占用空间 hdfs dfs -du /user/hadoop/
-dus 显示目录总占用空间 hdfs dfs -dus /user/hadoop/
-df 查看 HDFS 使用情况 hdfs dfs -df -h
-stat 查看文件信息 hdfs dfs -stat /user/hadoop/file.txt
-count 查看文件数/目录数/空间占用 hdfs dfs -count /user/hadoop
-checksum 获取文件校验码 hdfs dfs -checksum /user/hadoop/file.txt
-appendToFile 追加内容到文件末尾 hdfs dfs -appendToFile a.txt /user/hadoop/file.txt

        本篇博客对分布式文件系统HDFS进行了介绍,便于回顾。