HDFS——块扫描与目录扫描

【前言】

在dn整体架构一文中提到了逻辑业务层包括BP管理、块扫描和目录扫描,文本就来聊聊块扫描和目录扫描的大概原理。

【块扫描】

块扫描主要是对dn上存储的所有block进行数据完整性校验。进一步来讲,就是读取dn存储的所有block文件,以及对应的元数据(meta)文件,然后进行数据完整性的校验。

在dn的具体实现中,块扫描对应的类BlockScanner只是一个壳,具体扫描由VolumeScanner负责。每个VolumeScanner负责一个目录,同时也是一个独立的线程。在该线程中,扫描并读取各自目录中的block数据。

每个配置的目录都有一个唯一的ID,BlockScanner中就以该ID为key,VolumeScanner为value,保存所有的VolumeScanner。

由于扫描需要读取具体block文件中的数据和meta文件中的数据,为了避免扫描产生的IO对正常读写IO性能产生影响,因此,块扫描会进行一定的限速处理。

又因为有了限速,一次完整的块扫描耗时是非常长的,为了避免扫描过程中,dn意外的重启,导致重新开始扫描,因此扫描过程中会定期将扫描的信息记录到磁盘文件中(游标文件),dn重启后读取该文件继续本次扫描直到扫描完所有的block。

另外,VolumeScanner并不是在dn启动后就创建运行的,而是当dn成功向nn获取到命名空间信息后,才会在每个Vol

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值