HDFS 數據塊損壞

一、原因

由斷電或其它原因引起的HDFS服務不正常或者塊損壞

二、解決

(一)、檢查HDFS的文件的健康狀態

hdfs fsck /

(二)、查看損壞的塊以及文件的對應關係

hdfs fsck -list-corruptfileblocks

(三)、解決辦法:

數據可以從其它地方找到(比如MySQL)

將數據重新刷新一份到HDFS上

hdfs fsck / delete
# 刪除損壞的文件,
# 然後重刷一份到HDFS
數據沒辦法從其它地方找到
  1. 查看相應文件的數據塊狀態及其副本存放的位置
hdfs fsck <file path> -files  -locations -blocks  -racks

這種方式只能顯示出好的副本存放的位置,並不能找到壞的副本存放的位置
找到對應的文件,先下載一份到本地,然後將HDFS上的刪除,再重新上傳

hdfs dfs -get <path>
hdfs dfs -rm <path>
hdfs dfs -put <loacal path> <HDFS path>
  1. 如果可以找到損壞的副本位置,可以進行手動修復,先將其刪除,然後執行下列命令
    刪除副本文件,而非hdfs文件
hdfs debug recoverLease -path <path> -retries 10
  1. 自動修復
    在DN向NN進行blockReport的時候,進行自動修復,默認時間間隔是6h。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章