DataNode工作和服务原理

DataNode查看他的属性,可以分成以下几个方面:

1.offerService()方法,此方法在DataNode主循环中执行,做的事情包括和NameNode心跳交互;通知NameNode一段时间以来收到的block;本机block的报告

2.DataXceiverServer,主要处理block的读写

3.BlockScanner,对本机block的扫描和校验处理

4.FSDataset,本机block存储的入口

5.ipcServer,主要是DataNode和DataNode之间recover block时使用。

这里主要说明第1点,其它几点在另外一文中已经介绍过,offerService的主要流程见下图:

offerService是在一个while循环里面被执行,只要DataNode存活,就一直被执行,工作流程如下:


1.如果距离上一次heartbeat时间超过了指定的时间,调用namenode.sendHeartbeat方法,namenode是ipc的框架下的一个proxy,可以认为就是远程的NameNode,该方法向NameNode汇报DataNode还存活,以及汇报DataNode的利用率,NameNode会返回一系列关于本DataNode的BlockCommand


2.DataNode处理返回的BlockCommand,BlockCommand有DNA_TRANSFER(发送block去指定的DataNode),DNA_INVALIDATE(删除指定的本机上面的block),DNA_SHUTDOWN(DataNode停止工作),DNA_REGISTER(DataNode向NameNode注册),DNA_FINALIZE(DataNode完成升级流程),DNA_RECOVERBLOCK(recover block)等

 

3.报告自从上一次心跳以来DataNode收到的block信息,调用namenode.blockReceived方法

 

4.如果距离上一次block report时间超过了指定的时间,调用namenode.blockReport方法,NameNode会返回一系列的DatanodeCommand,接下来的处理就和第2点一样了

5.根据其他条件,适当的做一些处理,主要是为了考虑资源利用等等

 

转载于:https://www.cnblogs.com/nod0620/archive/2012/08/10/2626691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值