DirectoryScanner
DirectoryScanner的主要任务是定期扫描磁盘上的数据块,检查磁盘上的数据块信息是否与FsDatasetImpl中保存的数据块信息一致,如果不一致则对FsDatasetImpl中的信息进行更新。
注:DirectoryScanner只检查内存和磁盘上FINALIZED状态的数据块是否一致。
public class DirectoryScanner implements Runnable {
...
// 异步收集磁盘数据块信息的线程池
private final ExecutorService reportCompileThreadPool;
// master线程,定期调用DirectoryScanner.run方法
private final ScheduledExecutorService masterThread;
// 数据块信息与内存元数据的差异,扫描过程中更新,扫描结束后把diffs更新到FsDatasetImpl
final ScanInfoPerBlockPool diffs = new ScanInfoPerBlockPool();
...
DirectoryScanner(DataNode datanode, FsDatasetSpi<?> dataset, Configuration conf) {
DirectoryScanner机制解析

本文深入解析了DirectoryScanner机制,它是负责定期扫描磁盘数据块,确保磁盘与内存数据块信息一致性的关键组件。DirectoryScanner通过异步线程池收集磁盘数据块信息,并在扫描周期内与FsDatasetImpl中的数据块信息进行对比和更新。
最低0.47元/天 解锁文章
650

被折叠的 条评论
为什么被折叠?



