问答详情
源自:2-2 HDFS写流程和读流程

为何写流程中是由DataNode1通知DataNode2,再由DataNode2通知DataNode3,而不是DataNode1同时通知DataNode2和DataNode3?

个人觉得后者对降低写的latency更友好吧

提问者:二零醚 2018-01-23 18:08

个回答

  • 叁金
    2018-01-27 15:32:30

     在向HDFS的写操作中,不得不提一下“数据流管道”。数据流管道在Google实现他们的分布式文件系统(GFS)时就已引入,其目的是:在写一份数据的多个副本时,可以充分利用集群中每一台机器的带宽,避免网络瓶颈和高延时的连接,最小化推送所有数据的延时。  其实这里我可能表述的不太准确,Client在保存数据的过程当中,将数据发送到第一个数据节点DateNode 1,然后在第一个DateNode节点在本地保存数据的同时,将数据推送到第二个数据节点DateNode 2,同理在第二个节点本地保存数据的同时,也会由第二个数据节点将数据同送给第三个数据节点DateNode 3。  这样啊,每个节点都能承担写数据时的部分网络流量,降低了客户端发送多分数据时对网络的冲击

  • 高冷的女神范
    2018-02-04 18:51:29

    写的话也是按照最近的dataNODE来进行存储吧

  • 不忘初心无旁骛
    2018-01-26 11:54:05

    客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本,百度到的,老师的DataNode-2和DataNode-3应该是DataNode-1的副本