Hadoop 数据读写流程可以从宏观角度和微观角度来详细描述。

宏观角度:

  1. 数据读取流程:

    • 客户端应用程序通过 Hadoop 文件系统 (HDFS) 提供的 API,向 NameNode 发送读取请求。
    • NameNode 检查文件在集群中的位置信息,并返回包含数据块位置的数据块映射表。
    • 客户端收到数据块映射表后,根据所需的数据块位置信息与相应的 DataNode 建立连接。
    • 客户端从 DataNode 读取数据块,并将数据块存储在本地缓存中进行处理。
  2. 数据写入流程:

    • 客户端应用程序通过 HDFS API,向 NameNode 发送写入请求。
    • NameNode 接收到写入请求后,将文件的元数据信息存储在内存中,并返回可以存储数据的 DataNode 列表。
    • 客户端根据 DataNode 列表与各个 DataNode 建立连接,并将数据按照数据块的大小划分为多个数据块。
    • 客户端将数据块依次发送给 DataNode,DataNode 接收并验证数据块后,将其存储在本地磁盘上。
    • DataNode 向 NameNode 发送写入确认信息,NameNode 更新文件的元数据信息。

微观角度:

  1. 数据读取流程:

    • 客户端应用程序通过 Hadoop 的 InputFormat 指定要读取的文件和数据划分方式。
    • InputFormat 将输入文件划分为输入分片 (InputSplit),每个输入分片对应一个数据块。
    • Map 任务启动,并根据输入分片的位置信息与对应的 DataNode 建立连接。
    • Map 任务从 DataNode 读取数据块,并将数据解析为键值对。
    • Map 任务将处理后的键值对传递给 Reduce 任务或输出到 Hadoop 文件系统。
  2. 数据写入流程:

    • 客户端应用程序通过 Hadoop 的 OutputFormat 指定要写入的文件和输出方式。
    • Map 任务将处理后的键值对传递给 Combiner(可选)进行局部聚合。
    • Map 任务将输出数据划分为输出分片 (OutputSplit),每个输出分片对应一个数据块。
    • Reduce 任务启动,并根据输出分片的位置信息与对应的 DataNode 建立连接。
    • Reduce 任务将输出数据块写入 DataNode,并根据键对数据进行排序和合并。
    • Reduce 任务向 NameNode 发送写入确认信息,NameNode 更新文件的元数据信息。

以上是 Hadoop 读写数据的流程,从宏观和微观两个角度详细描述了整个过程。宏观角度关注整体流程和主要组件之间的交互,而微观角度更关注任务执行和数据处理的具体细节。

Hadoop 数据读写流程详解:宏观与微观视角

原文地址: https://www.cveoy.top/t/topic/ol8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录