HDFS

时间:2016-06-06 17:20:34

标签: hadoop hdfs

以下是“HDFS中文件写入剖析”中Hadoop权威指南的句子。我不清楚,有人可以提供更多细节。

如果在向其写入数据时任何datanode失败,则执行以下操作,这些操作对写入数据的客户端是透明的。首先,关闭管道,并将ack队列中的所有数据包添加到数据队列的前面,以便故障节点下游的数据节点不会丢失任何数据包。

问。)这是什么意思“故障节点下游的数据节点不会丢失任何数据包”?任何人都可以解释更多细节。

当客户端完成数据写入后,它会调用流上的close()。此操作会将所有剩余数据包刷新到datanode管道,并在联系namenode之前等待确认,以表明文件已完成。

问。)“操作将所有剩余数据包刷新到datanode管道”是什么?

问。)如果客户端已完成数据写入,那么为什么数据包仍然存在,为什么它必须刷新数据节点。

1 个答案:

答案 0 :(得分:0)

Ans.1 )在Hadoop中有一个复制因子的概念,它决定要写入数据的数据管道(检查我在data pipeline上的答案)。假设在向3个节点写入数据时,第3个节点发生故障。然后应该正确写入其他两个节点的数据。他们不应该成为其他问题的罪魁祸首。

Ans.2和3 )在向hdfs写入数据的过程中,客户端完成了在某个时间点写入的数据,但这并不意味着完整的数据实际上是写入下游的datanodes。 Datanodes可能正在等待cpu周期或写入时可用的内存。在这种情况下,客户端在输出流上调用close()方法以确认写入数据。