verifyEC命令是HDFS里用于验证EC文件正确性的一个工具。这是一个非常实用的工具,能帮助我们确定EC的数据内容是否正确,并且如果不正确的话,还有可能会触发reportBadBlock给NN,让NN进行块的重构。
本文先介绍一下verifyEC命令的使用方法,再描述其实现原理细节。
一、命令使用方法及做的相关测试
hdfs debug verifyEC -file your.file
如果EC文件数据正常,会有如下输出:
Checking EC block group: blk_-9223372036705532896
Status: OK
All EC block group status: OK
如果EC文件数据错误会有异常输出,比如我将一个parity block给echo 0了,然后执行命令就会报下面的错误:
Checking EC block group: blk_-9223372036705532896
Status: ERROR, message: java.io.IOException: Premature EOF reading from org.apache.hadoop.net.SocketInput