首页 百科知识 源代码分析(一六)

源代码分析(一六)

时间:2024-09-22 百科知识 版权反馈
【摘要】:DataBlockScanner拥有它单独的线程,能定时地从目前DataNode管理的数据块文件进行校验。verifyBlock只需要读一个Block到一个空输出设备,如果有异常,那么校验失败,如果正常,校验成功。DataBlockScanner其他的辅助方法用于对DataBlockScanner管理的数据块文件信息进行增加/删除,排序操作。

通过上面的讨论,DataNode上的读/写流程已经基本清楚了。我们来看下一个非主流流程,

DataBlockScanner用于定时对数据块文件进行校验。类图如下:

mhtml:file://I:\技术文章下载\2010-4-23整理到notebook\Hadoop汇总2010-4-22\Hadoop源码分析\Hadoop<a href=源代码分析(一六)%20-%20-%20JavaEye技术网站.mht!http://caibinbupt.javaeye.com/upload/attachment/56100/81d7352b-c231-35b0-a15c-78fd427a8c6e.jpg">

DataBlockScanner拥有它单独的线程,能定时地从目前DataNode管理的数据块文件进行校验。其实最重要的方法就是verifyBlock,我们来看这个方法最关键的地方:

Java代码 复制代码

blockSender = new     BlockSender(block, 0, -1, false,     false, true, datanode);  

DataOutputStream out = new DataOutputStream(new     IOUtils.NullOutputStream());  

blockSender.sendBlock(out, null, throttler); 

 

校验利用了BlockSender,因为我们知道BlockSender中,发送数据的同时,会对数据进行校验。verifyBlock只需要读一个Block到一个空输出设备(NullOutputStream),如果有异常,那么校验失败,如果正常,校验成功。

DataBlockScanner其他的辅助方法用于对DataBlockScanner管理的数据块文件信息进行增加/删除,排序操作。同时,校验的信息还会保持在Storage上,保存在dncp_block_verification.log.currdncp_block_verification.log.prev中。


免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈