文件复制到DataNodes时,Hadoop HDFS中的数据流管道

sid*_*ani 1 hadoop dataflow hdfs

我只是想更多关于以下声明.当我试图理解HDFS如何写入数据节点时.我得到了关于HDFS写入的以下解释.

为什么hdfs客户端将4kb发送到数据节点而不是将整个块64MB发送到数据节点?有人可以详细解释一下吗?

为了获得更好的性能,数据节点维护用于数据传输的管道.数据节点1在其开始传输到流中的数据节点2之前不需要等待完整的块到达.实际上,对于给定块,从客户端到数据节点1的数据传输发生在4KB的较小块中.当数据节点1从客户端接收到第一个4KB块时,它将该块存储在其本地存储库中,并立即开始将其传输到流中的数据节点2.同样,当数据节点2从数据节点1接收到第一个4KB块时,它将该块存储在其本地存储库中并立即开始将其传输到数据节点3.这样,流中除最后一个之外的所有数据节点都从前一个并将其传输到流中的下一个数据节点,以通过避免每个阶段的等待时间来提高写入性能.

mrs*_*vas 5

你的问题有答案.

在这张图片中,我们假设文件大小等于块大小(128 MB).所以**A, B, C .. are the chunks in block**

数据流管道 https://i.stack.imgur.com/REO6r.jpg

当数据节点1从客户端接收到第一个4KB(A)块时,它将该块存储在其本地存储库中,并立即开始将其传输到流中的数据节点2.同样,当数据节点2从数据节点1接收到第一个4KB块时,它将该块存储在其本地存储库中并立即开始将其传输到数据节点3

这里的优点是数据节点2和3不需要等到128 MB数据在开始复制之前复制到数据节点1.因此,延迟因为复制将只有一个或两个chucks复制时间,因为所有块并行复制到节点.