NameNode和DataNode通信机制

参考:http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/


备注:

client和namenode之间是通过rpc通信;

datanode和namenode之间是通过rpc通信;

client和datanode之间是通过简单的socket通信。


写数据Blk A,Blk B,Blk C分别需要写入1,5,6 DN上,namenode询问1是否准备好,1问5是否准备好,5问6是否准备好,1,5,6之间创建一个pipeline管道复制数据BlkA,结束之前,Blk B 不会开始。更新完Blk A,namenode会更新file.txt BlkA 的metadata(包括location)


读数据:Client首先从Name node查询文件block的位置。Name node返回一个包含所有block位置的链表,每个block位置包含全部copies所在的Data node,如BlkA DN1,DN5,DN6,Client选取一个数据块的Data node位置,通过TCP50010端口从这个Data node读取一块,机架感知获取同一机架内节点数据保证低延迟


MapReduce执行流程:

Client首先提交Map Reduce job给Job tracker,发送请求:“How many times does Refund occur in file.txt”。Job tracker向Name node查询哪些Data nodes包含文件File.txt的数据块。然后Job Tracker在这些Data nodes上运行Java代码 在Data node的本地数据上执行Map计算。Task Tracker启动一个Map task监测这些tasks的执行。Task Tracker通过heartbeats向Job Tracker汇报task的状态。当每一个Map task都完成后,计算结果保存在这些节点的临时存储区内,我们称之为"intermediate data"。下一步是把这些中间数据通过网络发送给运行Reduce的节点以便完成最后的计算。


备注:

Job tracker总是尝试选择包含待处理数据的Data node做Map task,但是有时不会这样。比如,所有包含这块数据的Data node已经有太多的tasks正在运行,不再接收其他的task.

这种情况下,Job Tracker将询问Name node,Name node会根据Rack Awareness建议一个in-rack Data node。Job tracker把task分配给这个in-rack Data node。这个Data node会在Name node的指导下从包含待处理数据的in-rack Data node获取数据。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值