[
https://issues.apache.org/jira/browse/HADOOP-4402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brian Bockelman resolved HADOOP-4402.
-------------------------------------
Resolution: Invalid
> Namenode is unaware of FS corruption
> ------------------------------------
>
> Key: HADOOP-4402
> URL: https://issues.apache.org/jira/browse/HADOOP-4402
> Project: Hadoop Core
> Issue Type: Bug
> Components: dfs
> Affects Versions: 0.18.1
> Reporter: Brian Bockelman
> Fix For: 0.18.2
>
> Original Estimate: 96h
> Remaining Estimate: 96h
>
> I think the name node is not told when there is block corruption.
> I found a huge number of files corrupted when I restarted my namenode.
> Digging through the datanode logs, I saw the following:
> 2008-10-13 03:30:44,266 INFO org.apache.hadoop.dfs.DataBlockScanner:
> Reporting bad block blk_-54103619973430645_3038 to namenode.
> 2008-10-13 03:57:11,447 WARN org.apache.hadoop.dfs.DataBlockScanner: First
> Verification failed for blk_7657563767222456337_3165. Exception :
> java.io.IOException: Block blk_7657563767222456337_3165 is not valid.
> at org.apache.hadoop.dfs.FSDataset.getBlockFile(FSDataset.java:716)
> at org.apache.hadoop.dfs.FSDataset.getLength(FSDataset.java:704)
> at org.apache.hadoop.dfs.DataNode$BlockSender.<init>(DataNode.java:1678)
> at
> org.apache.hadoop.dfs.DataBlockScanner.verifyBlock(DataBlockScanner.java:408)
> at
> org.apache.hadoop.dfs.DataBlockScanner.verifyFirstBlock(DataBlockScanner.java:474)
> at org.apache.hadoop.dfs.DataBlockScanner.run(DataBlockScanner.java:565)
> at java.lang.Thread.run(Thread.java:595)
> 2008-10-13 03:57:11,448 WARN org.apache.hadoop.dfs.DataBlockScanner: Second
> Verification failed for blk_7657563767222456337_3165. Exception :
> java.io.IOException: Block blk_7657563767222456337_3165 is not valid.
> at org.apache.hadoop.dfs.FSDataset.getBlockFile(FSDataset.java:716)
> at org.apache.hadoop.dfs.FSDataset.getLength(FSDataset.java:704)
> at org.apache.hadoop.dfs.DataNode$BlockSender.<init>(DataNode.java:1678)
> at
> org.apache.hadoop.dfs.DataBlockScanner.verifyBlock(DataBlockScanner.java:408)
> at
> org.apache.hadoop.dfs.DataBlockScanner.verifyFirstBlock(DataBlockScanner.java:474)
> at org.apache.hadoop.dfs.DataBlockScanner.run(DataBlockScanner.java:565)
> at java.lang.Thread.run(Thread.java:595)
> 2008-10-13 03:57:11,448 INFO org.apache.hadoop.dfs.DataBlockScanner:
> Reporting bad block blk_7657563767222456337_3165 to namenode.
> So, node099 found a bad block. However, if I grep the namenode information
> for that block:
> /scratch/hadoop/logs/hadoop-root-namenode-hadoop-name.log.2008-10-10:2008-10-10
> 20:21:20,002 INFO org.apache.hadoop.dfs.StateChange: BLOCK*
> NameSystem.allocateBlock:
> /user/uscms01/LoadTestDownload/LoadTest07_FNAL_01_MyQXiu5a22TJQlcB_508.
> blk_7657563767222456337_3165
> /scratch/hadoop/logs/hadoop-root-namenode-hadoop-name.log.2008-10-10:2008-10-10
> 20:21:32,150 INFO org.apache.hadoop.dfs.StateChange: BLOCK*
> NameSystem.addStoredBlock: blockMap updated: 172.16.1.110:50010 is added to
> blk_7657563767222456337_3165 size 67108864
> /scratch/hadoop/logs/hadoop-root-namenode-hadoop-name.log.2008-10-10:2008-10-10
> 20:21:32,151 INFO org.apache.hadoop.dfs.StateChange: BLOCK*
> NameSystem.addStoredBlock: blockMap updated: 172.16.1.99:50010 is added to
> blk_7657563767222456337_3165 size 67108864
> /scratch/hadoop/logs/hadoop-root-namenode-hadoop-name.log.2008-10-12:2008-10-12
> 05:05:26,898 INFO org.apache.hadoop.dfs.StateChange: BLOCK* ask
> 172.16.1.99:50010 to replicate blk_7657563767222456337_3165 to datanode(s)
> 172.16.1.18:50010
> /scratch/hadoop/logs/hadoop-root-namenode-hadoop-name.log.2008-10-12:2008-10-12
> 05:05:40,742 INFO org.apache.hadoop.dfs.NameNode: Error report from
> 172.16.1.99:50010: Can't send invalid block blk_7657563767222456337_3165
> /scratch/hadoop/logs/hadoop-root-namenode-hadoop-name.log.2008-10-12:2008-10-12
> 05:12:43,759 WARN org.apache.hadoop.fs.FSNamesystem:
> PendingReplicationMonitor timed out block blk_7657563767222456337_3165
> To summarize:
> - Block is allocated and written successfully to node100, then replicated to
> node099.
> - Name node asks node099 to replicate block to node018
> - Name node is told it can't send invalid block to node018! A few minutes
> later, the PendingReplicationMonitor times out
> - No new replications are launched!!!
> - Block is found to be corrupted on node099 a few days later. Data node
> claims to inform the namenode of this, but nothing is listed in the namenode
> logs.
> - Block is suspiciously missing on node110 as well
> Perhaps there are a few bugs here?
> 1) Name node doesn't get notified of the corrupted blocks - even though the
> datanode claims to!
> 2) On replication failure, no new replicas are created.
> 3) Corruption events are much, much too common. We have a specific dataset
> which the namenode now claims is mostly-corrupted (100/167 files); before I
> restarted the namenode, we had jobs run against it continuously for the
> entire weekend. The jobs were all successful, and the binary data format
> does internal integrity checks as it reads the files. If the corruption was
> real, jobs would have failed.
> I'm concerned that the corruption-detection systems of Hadoop are seriously
> busted for me.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.