Hadoop:HDFS文件写入和读取

Vij*_*ddy 6 hadoop hdfs

我有一个关于文件写入和HDFS读取的基本问题.

例如,如果我使用默认配置编写文件,Hadoop内部必须将每个块写入3个数据节点.我的理解是,对于每个块,首先客户端将块写入管道中的第一个数据节点,然后通知第二个,依此类推.一旦第三个数据节点成功接收到块,它就会向数据节点2提供确认,最后通过数据节点1向客户端提供确认.只有在收到块的确认后,才认为写入成功,客户端继续写入下一个街区.

如果是这种情况,那么编写每个块所花费的时间不会超过传统的文件写入,因为 -

  1. 复制因子(默认为3)和
  2. 写入过程在块之后顺序发生.

如果我的理解错了,请纠正我.另外,以下问题如下:

  1. 我的理解是Hadoop中的文件读/写没有任何并行性,它可以执行的最好是与传统的文件读取或写入相同(即,如果复制设置为1)+分布式通信机制中涉及的一些开销.
  2. 并行性仅在数据处理阶段通过Map Reduce提供,但在客户端的文件读/写期间不提供.

San*_*pas 1

尽管您上面对文件写入的解释是正确的,但DataNode可以同时读取和写入数据。来自HDFS 架构指南

DataNode 可以从管道中的前一个节点接收数据,同时将数据转发到管道中的下一个节点

写入操作比传统文件系统花费更多时间(由于带宽问题和一般开销),但不会多至 3 倍(假设复制因子为 3)。