【Hadoop】HDFS 读写流程

简介: 【4月更文挑战第9天】【Hadoop】HDFS 读写流程

当我们谈论大数据时,就不得不提到HDFS,即Hadoop分布式文件系统。它是Apache Hadoop项目的核心组件之一,被设计用来存储和处理大规模数据集。那么,HDFS是如何实现读写数据的呢?让我来详细解析一下。

image.png

HDFS概述

在深入了解HDFS的读写流程之前,让我们先了解一下HDFS的基本概念。HDFS采用了一种称为“块”的存储方式,将大文件划分成若干个大小相等的块,通常默认大小为128MB或256MB。这些块会被分散存储在集群中的不同节点上,以实现数据的分布式存储和高可用性。

HDFS的架构主要由以下两种节点组成:

  1. NameNode(名称节点):负责管理文件系统的命名空间,包括文件和目录的创建、删除和重命名等操作,以及块的映射管理。

  2. DataNode(数据节点):负责存储实际的数据块,并响应客户端的读取和写入请求。

在HDFS中,文件被划分成块并存储在不同的DataNode上,NameNode负责维护文件系统的元数据信息,如文件的目录结构、块与DataNode的映射关系等。

HDFS读取流程

现在让我们来看看HDFS是如何实现读取数据的。当客户端需要读取一个文件时,读取流程大致如下:

  1. 客户端请求:客户端向NameNode发送文件读取请求,NameNode根据文件的元数据信息确定文件的块所在的DataNode列表。

  2. 块位置获取:NameNode返回包含了所需块的位置信息的列表给客户端。

  3. 数据读取:客户端直接连接到所需块的DataNode进行数据读取,如果一个DataNode不可用,客户端将尝试连接其他副本所在的DataNode。

  4. 数据传输:客户端从DataNode读取数据块,并将数据传输到本地进行处理。

HDFS写入流程

接下来,让我们看看HDFS是如何实现数据写入的。写入流程如下:

  1. 文件分块:当客户端需要将一个文件写入到HDFS时,HDFS会将文件划分成若干个大小相等的块。

  2. 块位置分配:NameNode为每个块选择若干个DataNode,并将这些信息返回给客户端。

  3. 数据复制:客户端将每个块的数据复制到所选的DataNode上,并等待确认。

  4. 数据传输:客户端将数据块传输到DataNode,如果有副本,还会将数据复制到其他副本所在的DataNode上。

  5. 写入确认:当所有的块都被成功写入到DataNode后,客户端会向NameNode发送写入完成的确认消息。

  6. 元数据更新:NameNode更新文件系统的元数据信息,包括文件的长度、块信息等。

总结

综上所述,HDFS的读写流程涉及到客户端、NameNode和DataNode之间的协作。在读取数据时,客户端先请求NameNode获取数据块的位置信息,然后直接连接到DataNode进行数据读取。而在写入数据时,客户端需要先将数据复制到DataNode上,并等待确认后再向NameNode发送写入完成的消息。通过这样的分布式存储和读写方式,HDFS能够有效地支持大规模数据的存储和处理,成为了大数据领域的重要基础设施之一。

相关文章
|
3月前
|
XML 存储 分布式计算
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
HDFS(Hadoop分布式文件系统)由三个核心组件构成:NameNode、DataNode和SecondaryNameNode。NameNode负责管理文件系统的命名空间和客户端请求,维护元数据文件fsimage和edits;DataNode存储实际的数据块,默认大小为128MB;SecondaryNameNode定期合并edits日志到fsimage中,但不作为NameNode的热备份。通过这些组件的协同工作,HDFS实现了高效、可靠的大规模数据存储与管理。
311 70
|
8月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
370 6
|
8月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
231 0
|
8月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
105 0
|
8月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
151 0
|
8月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
145 3
|
8月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
189 5
|
8月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
105 4
|
8月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
354 5
|
8月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
129 4

热门文章

最新文章

相关实验场景

更多