1. 程式人生 > >hadoop hdfs missing blocks & 安全模式

hadoop hdfs missing blocks & 安全模式

近期在做磁碟有關的一些測試時,最先是發現habse出現了RIT而且還是meta表的RIT,檢視hadoop,出現了hdfs  missing blocks的問題,hadoop master上一上來就能看見報該問題。


There are 88 missing blocks. The following files may be corrupted:


blk_1076662996	/**/default/usertable/c31c955d868aa590ee08776c4e47f648/cf/e04822ace0e348e38d09b55e5124cfdc
blk_1076663064	/**/default/usertable/c31c955d868aa590ee08776c4e47f648/cf/e04822ace0e348e38d09b55e5124cfdc
blk_1076743273	/**/default/********1029_201810/bdfb0c7d8651f9ba99eaec22dc42cb13/f/afc59021d518457b9152e4a1c057fce4
blk_1076663044	/**/default/usertable/c31c955d868aa590ee08776c4e47f648/cf/e04822ace0e348e38d09b55e5124cfdc
blk_1076743287	/**/default/*****1029_201810/bdfb0c7d8651f9ba99eaec22dc42cb13/f/afc59021d518457b9152e4a1c057fce4
blk_1076663096	/**/default/usertable/c31c955d868aa590ee08776c4e47f648/cf/e04822ace0e348e38d09b55e5124cfdc
blk_1076743312	/**/default/******1029_201810/bdfb0c7d8651f9ba99eaec22dc42cb13/f/afc59021d518457b9152e4a1c057fce4
blk_1073743276 

在網上查看了一些部落格,missing block的意思是hdfs上的塊不存在了,並不是少於3份,很難恢復。但是, the "blocks missing" it means that those blocks are not available in the live data nodes of the cluster, please verify any data node is down/unhealthy and bring it back - might rectify the missing blocks.

解決方案:

2. 參考部落格的一些做法  先用 hdfs fsck /  檢查missing block,再用 hdfs fsck -delete + block 可以移除 missing block

這裡要注意,如果datanode丟失的資料塊過多,達到一定的比例,會使得hadoop進入安全模式,也就是除了讀不能進行其他任何操作,從而hbaseRS也處於有問題的狀態。如果進入安全模式要先解決安全模式的問題才能使用 hdfs fsck delete。

安全模式的問題可以參考下文第三個部落格連結。有兩種辦法:

 1. hadoop dfsadmin -safemode leave命令,強制離開

 2. 修改dfs.safemode.threshold.pct,預設是0.999,修改為一個比較小的值。

此外分享給小可愛們一個我自己寫的蹩腳指令碼用來刪除MISSING BLOCK:

for (( i=0; i<100; i++ ))
do
    hdfs fsck / | grep 'MISSING' | head -n 1 | cut -d : -f 1 | xargs hdfs fsck -delete
done

效率不高,我自己用著夠用了。可能有不對的地方,小可愛們水平高的發現問題自助修改哈。

參考部落格: