美文网首页
Hadoop写入读取原理

Hadoop写入读取原理

作者: 你值得拥有更好的12138 | 来源:发表于2019-08-06 20:16 被阅读0次

写入

image.png
  1. Client 发起文件上传请求, 通过 RPC 与 NameNode 建立通讯, NameNode 检查目标文件是否已存在, 父目录是否存在, 返回是否可以上传

  2. Client 请求第一个 block 该传输到哪些 DataNode 服务器上

  3. NameNode 根据配置文件中指定的备份数量及机架感知原理进行文件分配, 返回可用的 DataNode 的地址如: A, B, C

    • Hadoop 在设计时考虑到数据的安全与高效, 数据文件默认在 HDFS 上存放三份, 存储策略为本地一份, 同机架内其它某一节点上一份, 不同机架的某一节点上一份。
  4. Client 请求 3 台 DataNode 中的一台 A 上传数据(本质上是一个 RPC 调用,建立 pipeline ), A 收到请求会继续调用 B, 然后 B 调用 C, 将整个 pipeline 建立完成, 后逐级返回 client

  5. Client 开始往 A 上传第一个 block(先从磁盘读取数据放到一个本地内存缓存), 以 packet 为单位(默认64K), A 收到一个 packet 就会传给 B, B 传给 C. A 每传一个 packet 会放入一个应答队列等待应答

  6. 数据被分割成一个个 packet 数据包在 pipeline 上依次传输, 在 pipeline 反方向上, 逐个发送 ack(命令正确应答), 最终由 pipeline 中第一个 DataNode 节点 A 将 pipelineack 发送给 Client

  7. 当一个 block 传输完成之后, Client 再次请求 NameNode 上传第二个 block 到服务

读取

image.png
  1. Client向NameNode发起RPC请求,来确定请求文件block所在的位置;
  2. NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;
  3. Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);
  4. 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
  5. 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;
  6. 读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的DataNode 继续读。
  7. read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;
  8. 最终读取来所有的 block 会合并成一个完整的最终文件。

相关文章

  • Hadoop写入读取原理

    写入 Client 发起文件上传请求, 通过 RPC 与 NameNode 建立通讯, NameNode 检查目标...

  • Hadoop小解疑

    1. Hadoop中的流数据访问 Hadoop采用“一次写入、多次读取(流式数据访问)”的访问模式。对于大规模数据...

  • hadoop HDFS数据写入,读取流程

    HDFS写数据流程,如图4-1所示。 1)客户端通过Distributed FileSystem模块向NameNo...

  • fs文件系统操作

    基础写入文件 简单写入文件 流式文件写入 简单文件读取 流式文件读取 流式文件拷贝(读取 + 写入) 复制文件 f...

  • 常用Python 读写excel、csv文件的操作办法

    1、excel 写入 2、excel读取 3、写入csv 4、读取csv

  • HDFS学习

    HDFS是设计成一次写入,多次读取的场景,且不支持文件的修改 HDFS通常 位于 /hadoop-2.6.4/te...

  • 利用GCD实现高效的文件读取

    需求思路 读取时候可以并发进行,读取后要返回读取状态。 写入文件时候不可以读取,并且文件写入时不可以并发的进行写入...

  • hbase与mapduce集成

    1.从HBase读取数据2.将数据写入HBase3.结合以上两种,用于数据迁移 关联jar包问题:hadoop环境...

  • python 文件操作

    fp=open("文件路径","方式") 文件读取 文件写入 文件关闭 文件读取写入方式

  • python操作Excel

    写入Excel 举个栗子:读取数据库数据写入Excel 读取Excel 修改Excel

网友评论

      本文标题:Hadoop写入读取原理

      本文链接:https://www.haomeiwen.com/subject/xlxgdctx.html