HDFS上传时可以读取数据吗?

Can data be read during upload in HDFS?

假设 XYZ 先生正在将一个 500MB 的文件上传到 Hadoop (HDFS)。 100MB 的数据成功上传到 Hadoop(HDFS) 中,ABC 先生作为客户端想要在上传过程中读取上传的数据。这样的场景会发生什么,上传的1000MB数据会显示吗?

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

设块大小为 100MB,即五个块要复制三次(默认复制因子)

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

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

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