一个数据节点如何知道写入管道中的下一个数据节点?

时间:2019-09-17 20:42:41

标签: hadoop hdfs datanode

摘自“怀特,汤姆; Hadoop:明确指南;第3章,Hadoop分布式文件系统,文件写入剖析”:

  

... DataStreamer将数据包流式传输到管道中的第一个数据节点,该节点存储每个数据包并将其转发到管道中的第二个数据节点。同样,第二个datanode存储数据包并将其转发到...

中的第三个(也是最后一个)数据节点。

它没有提到数据节点如何知道哪个是下一个要发送数据包的数据节点。

1 个答案:

答案 0 :(得分:1)

Namenode知道所有的datanode和机架位置。数据节点彼此之间一无所知。

客户端在写入过程中首先联系Namenode,然后发送数据节点地址以进行副本写入

相关问题- Hadoop Replication Model - DataStreamer/Namenode

关于使用哪个地址,

  

HDFS的放置策略是,如果写入器位于数据节点上,则将一个副本放置在本地计算机上;否则,将其放置在与写入器相同的机架中的随机数据节点上,将另一个副本放置在不同(远程)机架中的节点上,最后一个位于同一远程机架中的其他节点上

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Replica_Placement:_The_First_Baby_Steps