【问题标题】:Can data be read during upload in HDFS?在 HDFS 中上传期间可以读取数据吗?
【发布时间】:2020-07-14 04:42:48
【问题描述】:

想象一下,XYZ 先生正在将一个 500MB 的文件上传到 Hadoop (HDFS) 中。 100MB 数据成功上传到 Hadoop(HDFS),作为客户端的 ABC 先生想在上传过程中读取上传的数据。在这种情况下会发生什么,上传的1000MB的数据会显示出来吗?

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    做这样的事情。 如果将一个 500MB 的文件上传到 HDFS。如果 100MB 的数据已经在 HDFS 中成功上传,而另一个客户端即将读取上传的数据,而上传仍在进行中。那么会发生什么呢?上传的那100MB数据是否会显示? Hadoop1x 的默认块大小为 64MB,Hadoop2x 的默认块大小为 128MB。

    让block-size为100MB,即5个block要复制3次(默认replication-factor)

    以下过程描述了如何在 HDFS 中写入块:

    如果我们将 A、B、C、D 和 E 作为客户端、文件、名称节点和数据节点的五个块。然后首先,客户端获取块 A 并接近名称节点以获取数据节点位置,以便存储当前块和它的复制副本。一旦数据节点信息可供客户端使用,他将直接到达数据节点并开始复制块 A,同时将复制到第二个数据节点。当块被复制并复制到数据节点时,块A存储的确认将到达客户端,然后客户端将重新启动下一个块即块B的相同过程。

    因此,如果一个客户端正在将 500MB 的文件上传到 HDFS,其中 100MB 的数据已成功上传到 HDFS,而另一个客户端即将读取上传的数据,而上传仍在进行中,则只有正在写入的当前块对读者是不可见的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多