If have only one copy of the block and it is mostly corrupted.. Namenode itself can not correct it. Of course, DFSClient should not print error in a infinite loop.

I think there was an old bug where crc file got overwritten by 0 length file.

One work around for you is to go to the datanode and remove the .crc file for this block (find /datanodedir -name blk_5994030096182059653\*). Be careful not to remove the block file itself.

longer term fix : upgrade to more recent version.

Raghu.

murali krishna wrote:
Hi,
When I try to read one of the file from dfs, I get the following error in an 
infinite loop (using 0.15.3)

“08/10/28 23:43:15 INFO fs.DFSClient: Could not obtain block 
blk_5994030096182059653 from any node:  java.io.IOException: No live nodes 
contain current block”

Fsck showed that the file is HEALTHY but under replicated (1 instead of 
configured 2). I checked the datanode log where the only replica exists for 
that block and I can see repeated errors while serving that bock.
2008-10-22 23:55:39,378 WARN org.apache.hadoop.dfs.DataNode: Failed to transfer 
blk_59940300961820596
53 to 68.142.212.228:50010 got java.io.EOFException
        at java.io.DataInputStream.readShort(DataInputStream.java:298)
        at org.apache.hadoop.dfs.DataNode$BlockSender.<init>(DataNode.java:1061)
        at org.apache.hadoop.dfs.DataNode$DataTransfer.run(DataNode.java:1446)
        at java.lang.Thread.run(Thread.java:619)

Any idea what is going on and how can I fix this ?

Thanks,
Murali


Reply via email to