【问题标题】:How does a datanode know next datanode in the writting pipeline?数据节点如何知道写入管道中的下一个数据节点?
【发布时间】:2019-09-22 12:18:42
【问题描述】:

来自“White,Tom;Hadoop:权威指南;第 3 章,Hadoop 分布式文件系统,文件写入剖析”:

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

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

【问题讨论】:

    标签: hadoop hdfs datanode


    【解决方案1】:

    Namenode 知道所有数据节点和机架的位置。 Datanodes不知道彼此。

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

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

    关于使用哪些地址,

    HDFS 的放置策略是,如果 writer 在 datanode 上,则将一个副本放在本地机器上,否则在与 writer 相同机架的随机 datanode 上,另一个副本在不同(远程)机架的节点上, 最后一个在同一个远程机架的不同节点上

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

    【讨论】:

    • 因为它是一个管道,第一个数据节点如何知道哪些数据节点是他必须发送数据的下一个数据节点。
    • 如前所述,Namenode 使用我引用的逻辑返回地址列表。数据节点不知道。写入数据的客户端执行并且只是转发该数据
    • 客户端只将数据发送到第一个数据节点。然后数据节点是相互发送数据的节点。如果列表只发送到客户端,数据节点如何知道它们必须将数据发送到哪里?
    • 当您从源复制时,所有必要的信息都会在写入请求中转发。我不确定您还在寻找什么。
    • 发送寻址数据节点列表到第一个数据节点的客户端也是如此吗?
    猜你喜欢
    • 2015-08-16
    • 2021-01-19
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多