In this post we’ll see how to get information about missing or corrupt blocks in HDFS and how to fix it. We'll also see how to fix under replicated blocks in HDFS.
Get information about corrupt or missing HDFS blocks
For getting information about corrupt or missing blocks in HDFS you can use following HDFS command which prints out list of missing blocks and files they belong to.
hdfs fsck -list-corruptfileblocks
Fixing corrupt or missing HDFS blocks
Using that information you can decide how important the file is where you have missing blocks. Since the easiest way is to delete the file and copy it to HDFS again. If you are ok with deleting the files that have corrupt blocks you can use the following command.
hdfs fsck / -delete
This command deletes corrupted files.
If you still want to have a shot at fixing the blocks that are corrupted using the file names which you got from running the hdfs fsck -list-corruptfileblocks command you can use the following command.
hdfs fsck <path to file> -locations -blocks -files
This command prints out locations for every block. Using that information you can go the data nodes where block is stored. You can verify if there is any network or hardware related error or any file system problem and fixing that will make the block healthy again or not.
Fixing under replicated blocks problem in Hadoop
If you have under replicated blocks in HDFS for files then you can use hdfs fsck / command to get that information.
Then you can use the following script where hdfs dfs -setrep <replication number> command is used to set required replication factor for the files.
$ hdfs fsck / | grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/files $ for problemfile in `cat /tmp/files`; do echo "Setting replication for $problemfile"; hdfs dfs -setrep 3 $problemfile; done
Actually when you run hdfs fsck / command the output is in the following form for the under replicated blocks -
File name: Under replicated <block>. Target Replicas is 3 but found 1 live replica(s), 0 decommissioned replica(s), 0 decommissioning replica(s).From this output using awk command you take the file name where word “Under replicated” is found and write them in a temp file. Then you set replication factor to 3 ( in this case) for those files.
That's all for this topic How to Handle Missing And Under Replicated Blocks in HDFS. If you have any doubt or any suggestions to make please drop a comment. Thanks!
>>>Return to Hadoop Framework Tutorial Page
Related Topics
You may also like-
No comments:
Post a Comment