BlockManager#checkRedundancy这个方法只有一处调用点,
就是FSNamesystem#finalizeINodeFileUnderConstruction
方法。
TODO:补充FSNamesystem#finalizeINodeFileUnderConstruction方法的调用点。
checkRedundancy方法的参数的BlockCollection对象bc,解释一下,INodeFile类是BlockCollection接口的实现类,所以这里可以把bc理解成INodeFile对象(即一个文件),BlockCollection接口提供了getBlocks方法,用于获取这个对象的所有块信息(返回值是BlockInfo[])。文章来源:https://www.toymoban.com/news/detail-632682.html
此方法的功能是:检查bc的每个块是否有充足的冗余度。如果冗余度不够,则可能有丢失数据的风险,因此需要添加到reconstruction的队列里。 如果冗余度超了期望的replication factor,则浪费存储空间,需要把它当做extra redundancy block来处理,删除多余冗余副本恢复到期望replication factor个副本数。文章来源地址https://www.toymoban.com/news/detail-632682.html
/**
* Check sufficient redundancy of the blocks in the collection. If any block
* is needed reconstruction, insert it into the reconstruction queue.
* Otherwise, if the block is more than the expected replication
到了这里,关于【HDFS】BlockManager#checkRedundancy方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!