HDFS数据块恢复算法的思考

HDFS数据块恢复算法的触发时机有2处:
一处是FSNamesystem.internalReleaseLease(Lease lease, String src);(租约恢复算法)
一处是Client写pipeline时某个Datanode出现错误而触发,具体见DFSClient.processDatanodeError()。

FSNamesystem.internalReleaseLease(Lease lease, String src)是由于租约的软/硬超时而调用,那为什么又要分软超时和硬超时两种呢?
个人见解(太久没看HDFS代码了所以生疏了不少,欢迎大家补充指正):
软超时的发生时机是Client要create或append一个文件,这个文件已经在Namenode的lease列表了,就会去检查这个lease是否软超时,若软超时就触发租约恢复算法;
硬超时的发生时机是Namenode上的LeaseChecker线程不断扫描lease列表,若lease的更新超过硬超时时间,则触发租约恢复算法;
注意软超时是要有Client去create或append一个文件时才会去判断,若没有Client去做这样的操作,则只有由Namenode去发现超时的lease,所以有软/硬超时。

Hadoop代码版本:0.20.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值