hdfs的写流程以及namenode,datanode挂掉后处理

HDFS写流程

client -> namenode: 请求上传第一个block -> 收到可上传的节点(距离感知, 机架感知)

-> 节点之间建立通信管道 -> 以Packet为单位传输数据(Packet中的单位chunk, 默认512B, 并校验)

-> 传输完成后再次向namenode请求, 上传下一个block

通信管道建立后, 确认队列(ack queue)等待传输结果, 队列确认完成后返回给客户端.

传输完成前namenode关闭

一个Block在datanode传输成功后, 如果client没来得及返回响应, namenode挂掉, 就会出现数据丢失(配置namenode高可用)

如果传输过程中datanode出现故障

关闭pipeline(通信管道)->根据ack queue将已经发送的pocket添加回data queue(撤回已经发送到故障节点的pocket) -> namenode记录故障节点中的未完成的block信息, 待节点恢复后, 删除这部分数据 -> 在剩余的节点上建立新的通信管道 -> 继续传输pocket

-> datanode挂掉后缺失的副本会namenode管理下恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值