10. HDFS主要流程之Datanode启动、心跳及执行Namenode指令流程

看一下Datanode和Namenode的交互流程,包括Datanode启动时的注册流程、心跳流程、数据块汇报以及增量汇报等流程,如下图所示


13274599-8ad22465261dab47.png
10. Datanode与Namenode交互流程.png

Datanode启动后与Namenode的交互主要包括三个部分,握手、注册、块汇报以及缓存汇报

Datanode启动后会首先通过DatanodeProtocol.versionRequest()获取Namenode的版本号以及存储信息等,然后Datanode会对Namenode的当前版本号和Datanode的当前软件、版本号进行比较,确保他们是一致的

成功地完成握手操作后,Datanode会通过DatanodeProtocol.registerDatanode()方法向Namenode注册。Namenode接收到注册请求后,会判断当前Datanode的配置是否属于这个集群,他们之间的版本是否一致

注册成功之后,Datanode就需要将本地存储的所有数据块以及缓存的数据块上报到Namenode,Namenode会利用这些信息重新建立内存中数据块与Datanode之间的对应关系

至此,Datanode就完成了启动的所有操作,之后就可以正常对外服务了。

Datanode成功启动后,需要定期向Namenode发送心跳,让Namenode知道当前Datanode处于活动状态能够对外服务。Namenode会在Datanode的心跳响应中携带Namenode指令,指导Datanode进行数据块的复制、删除以及恢复等操作。

当Datanode成功地添加了一个新的数据块或者删除了一个已有的数据块时,需要通过DatanodeProtocol.blockReceivedAndDeleted()方法向Namenode汇报。Namenode接收到这个汇报之后,会更新Namenode内存中数据块与Datanode之间的对应关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值