Hadoop 数据读写流程详解:宏观与微观视角
Hadoop 数据读写流程可以从宏观角度和微观角度来详细描述。
宏观角度:
-
数据读取流程:
- 客户端应用程序通过 Hadoop 文件系统 (HDFS) 提供的 API,向 NameNode 发送读取请求。
- NameNode 检查文件在集群中的位置信息,并返回包含数据块位置的数据块映射表。
- 客户端收到数据块映射表后,根据所需的数据块位置信息与相应的 DataNode 建立连接。
- 客户端从 DataNode 读取数据块,并将数据块存储在本地缓存中进行处理。
-
数据写入流程:
- 客户端应用程序通过 HDFS API,向 NameNode 发送写入请求。
- NameNode 接收到写入请求后,将文件的元数据信息存储在内存中,并返回可以存储数据的 DataNode 列表。
- 客户端根据 DataNode 列表与各个 DataNode 建立连接,并将数据按照数据块的大小划分为多个数据块。
- 客户端将数据块依次发送给 DataNode,DataNode 接收并验证数据块后,将其存储在本地磁盘上。
- DataNode 向 NameNode 发送写入确认信息,NameNode 更新文件的元数据信息。
微观角度:
-
数据读取流程:
- 客户端应用程序通过 Hadoop 的 InputFormat 指定要读取的文件和数据划分方式。
- InputFormat 将输入文件划分为输入分片 (InputSplit),每个输入分片对应一个数据块。
- Map 任务启动,并根据输入分片的位置信息与对应的 DataNode 建立连接。
- Map 任务从 DataNode 读取数据块,并将数据解析为键值对。
- Map 任务将处理后的键值对传递给 Reduce 任务或输出到 Hadoop 文件系统。
-
数据写入流程:
- 客户端应用程序通过 Hadoop 的 OutputFormat 指定要写入的文件和输出方式。
- Map 任务将处理后的键值对传递给 Combiner(可选)进行局部聚合。
- Map 任务将输出数据划分为输出分片 (OutputSplit),每个输出分片对应一个数据块。
- Reduce 任务启动,并根据输出分片的位置信息与对应的 DataNode 建立连接。
- Reduce 任务将输出数据块写入 DataNode,并根据键对数据进行排序和合并。
- Reduce 任务向 NameNode 发送写入确认信息,NameNode 更新文件的元数据信息。
以上是 Hadoop 读写数据的流程,从宏观和微观两个角度详细描述了整个过程。宏观角度关注整体流程和主要组件之间的交互,而微观角度更关注任务执行和数据处理的具体细节。
原文地址: https://www.cveoy.top/t/topic/ol8 著作权归作者所有。请勿转载和采集!