HDFS源码解析(4)-DataNode删除过期block

Posted by AlstonWilliams on February 17, 2019

在上篇文章中,我们最后抛出一个问题,即DataNode怎么知道那些block是corrupt的,或者是过期的,并删除它。

在这篇文章中,会介绍这个过程,其实很简单:

就是DataNode进行block report,然后NameNode检查是否有corrupt或者invalidate的block,如果有,就给DataNode发送一个BlockCommand.INVALIDATE Command来删除它。

就是这么简单。

有一点需要注意的是,默认情况下,DataNode每过一个小时才会进行一次Block report。所以,如果这个DataNode在这一个小时中,过期的block占满了磁盘,那么这个DataNode就不能提供存储服务了。

不过这种极端情况应该极少极少。