写点什么

大数据 -07-HDFS 集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件

作者:武子康
  • 2025-06-09
    山东
  • 本文字数:2163 字

    阅读完需:约 7 分钟

大数据-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI 篇持续更新中!(长期更新)

目前 2025 年 06 月 05 日更新到:

**AI 炼丹日志-28 - Audiblez 将你的电子书 epub 转换为音频 mp3 做有声书**,持续打造实用 AI 工具指南!📐🤖


💻 Java 篇正式开启!(300 篇)

目前 2025 年 06 月 05 日更新到:

**Java-39 深入浅出 Spring - AOP 切面增强 核心概念 通知类型 XML+注解方式 附代码**

MyBatis 已完结,Spring 正在火热更新中,深入浅出助你打牢基础!


📊 大数据板块已完成多项干货更新(300 篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!

目前 2025 年 06 月 05 日更新到:

**大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解**


👉 点个关注,不迷路!后续还将持续更新更多大模型+数据智能+工程实战内容,敬请期待!


章节内容

上一节完成:


  • Hadoop 历史服务器配置

  • Hadoop 历史日志聚集

  • Hadoop 历史日志可视化


  • 2C4G 编号 h121

  • 2C4G 编号 h122

  • 2C2G 编号 h123



请确保上一章节已经全部跑通!

HDFS 简介

HDFS (全称:Hadoop Distribute File System,Hadoop 分布式文件系统)是 Hadoop 核心组成,是分布式存储服务。分布式文件系统横跨多台计算机,在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。


HDFS分布式文件系统中的一种。


HDFS 通过统一的命名空间目录树来定位文件; 另外,它是分布式的,由很多服务器联合起来实现。集群中的服务器有各自的角色


  • 典型的 Master/Slave 架构 集群往往是 一个NameNode + 多个DataNodeHA下是2个NameNode)NameNode 是主节点,DataNode 是从节点。

  • 分块机制(block机制)HDFS 中是按分块存储的,Hadoop2.x 版本默认128MB一块

  • 命名空间(NameSpace)支持传统的文件组织结构,用户或程序可以创建目录,将文件保存到文件夹中。NameNode负责维护文件系统的名字空间,所有操作都会被NameNode记录下来。

  • NameNode 元数据管理,元数据中记录每一个文件对应的block信息

  • DataNode 数据存储,文件的各个block具体由DataNode节点承担,一个 block 会由多个 DataNode 进行存储。DataNode定时向NameNode来汇报自己的信息。

  • 副本机制。为了容错,每个 block 都有自己的副本。每个文件的 block 大小和副本系数都是可以配置的。副本系数可以在创建文件的时候指定,也可以在之后改变,副本数量默认是3个

  • 一次写入,多次写出。HDFS 设计成一次写多次读的场景。且不支持修改,支持追加写入,但是不能随机写更新。


具体的组成结构如下图:


NameNode

NameNode(nn)HDFS集群管理者,Master


  • 维护管理HDFS 的名称空间 NameSpace

  • 维护副本策略

  • 记录文件块Block的映射信息

  • 负责处理客户端的读写请求

DataNode

NameNode下达命令DataNode执行实际操作Slave


  • 保存实际数据

  • 负责数据块的读写

Client

  • 上传文件到 HDFS 的时候,Client 负责将文件切分成Block,然后进程上传。

  • 请求NameNode交互,获取文件的位置信息

  • 读取或写入文件,与DataNode交互

  • Client 可以使用一些命令来管理 HDFS 或者访问 HDFS


HDFS 读数据


  • 客户端 Distributed FileSystem 向 NameNode请求下载文件,NameNode 通过查询元数据到文件块所在的DataNode地址。

  • 选一台DataNode(就近选择,然后随机),请求取数据

  • DataNode开始传输数据给客户端,从磁盘里读取数据输入流,以 Packet 单位来做校验。

  • 客户端以 Packet 为单位接收,在本地缓存,然后写入目标文件。

HDFS 写数据


  • 客户端通过 Distributed FileSystem 模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。

  • NameNode返回是否可以上传

  • 客户端请求第一个Block上传到哪几个DataNode服务器

  • NameNode 返回 3 个 DataNode 节点,分别为 dn1, dn2, dn3

  • 客户端通过 FSDataOutputStream 模块请求上传 dn1,dn1 接到请求后会继续调用dn2,dn2 再调用 dn3。然后 dn1,dn2、dn3逐级应答客户端。

  • 客户端开始往 dn1 上传第一个 Block(先从磁盘读取数据放到一个本地缓存),以 Packet 为单位,dn1 收到一个 Packet 就传给 dn2,dn2 给 dn3,dn1 每传一个 Packet 会放入一个确认队列等待确认。

  • 当一个 Block 传输完成之后,客户端再次请求NameNode 上传第二个Block 的服务器

HDFS 的应用场景

  • 大数据处理:如 Hadoop MapReduce、Spark 等大数据处理框架,通常需要处理大量结构化和非结构化数据,而 HDFS 提供了大规模数据存储的基础。

  • 数据存档:HDFS 适合用于存储企业的大数据备份、归档文件,因为其具备高容错和高吞吐的特点。

  • 日志存储与分析:HDFS 适用于存储和管理日志数据,很多公司会把日志数据直接导入 HDFS,然后进行分布式计算和分析。

HDFS 集群的管理

HDFS 作为 Hadoop 生态中的核心组件,为大规模数据存储和处理提供了可靠的基础设施。它采用了分布式的存储方式,具有高容错性和可扩展性,非常适合批处理大数据分析任务。尽管它在小文件处理和实时更新方面存在一定的限制,但 HDFS 依然是目前广泛应用于数据密集型行业的数据存储解决方案。


  • 配置管理:集群管理员需要配置文件系统的路径、副本数、块大小、DataNode 数量等。通常使用 hdfs-site.xml 和 core-site.xml 来配置 HDFS 参数。

  • 监控和维护:HDFS 提供了多种监控工具,如 Hadoop 的 Web UI,通过它可以监控节点的状态、查看元数据和数据块的分布情况。

  • 容灾与备份:可以通过设置备份 NameNode 或使用分布式的文件系统管理来实现灾难恢复。同时,还可以定期备份 HDFS 的数据。

发布于: 刚刚阅读数: 2
用户头像

武子康

关注

永远好奇 无限进步 2019-04-14 加入

Hi, I'm Zikang,好奇心驱动的探索者 | INTJ / INFJ 我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。 坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。

评论

发布
暂无评论
大数据-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件_大数据_武子康_InfoQ写作社区