在hdfs中,提供了fsck命令,用於檢查hdfs上檔案和目錄的健康狀態、獲取檔案的block塊資訊和位置資訊等。
具體命令介紹:
-move: 移動損壞的檔案到/lost+found目錄下
-delete: 刪除損壞的檔案
-openforwrite: 輸出檢測中的正在被寫的檔案
-list-corruptfileblocks: 輸出損壞的塊及其所屬的檔案
-files: 輸出正在被檢測的檔案
-blocks: 輸出block的詳細報告 (需要和-files引數一起使用)
-locations: 輸出block的位置資訊 (需要和-files引數一起使用)
-racks: 輸出檔案塊位置所在的機架資訊(需要和-files引數一起使用)
模擬塊損壞
hdfs dfs -mkdir /blockrecover
echo "helloworld" > readme.md
hdfs dfs -put readme.md /blockrecover/
hdfs fsck / 檢視當前所有塊狀態
找到塊儲存的位置並刪除block塊及meta檔案。
重啟hdfs並檢查塊狀態
發現平均副本數小於3,說明有塊損壞
手動修復hdfs debug
hdfs debug recoverlease -path /blockrecover/readme.md -retries 10
在第三次重試時,塊修復成功
執行成功後,被刪除的塊和meta檔案又回來了。
自動修復:
當資料塊損壞後,dn節點執行directoryscan操作之前,都不會發現損壞;
也就是directoryscan操作是間隔6h
dfs.datanode.directoryscan.interval : 21600
在dn向nn進行blockreport前,都不會恢復資料塊;
也就是blockreport操作是間隔6h
dfs.blockreport.intervalmsec : 21600000
當nn收到blockreport才會進行恢復操作。
總結
HDFS Block損壞的解決方式與思考
斷電導致hdfs服務不正常,並顯示塊損壞 檢查hdfs系統檔案健康 hdfs fsck 注 通過web ui也可以進行檢視 檢查是對應的哪些block發生了損壞 hdfs fsck list corruptfileblocks 出來的結果是損壞的block及對應的file所在的路徑 業務場景如下 m...
恢復損壞的pdf檔案
昨天在編輯乙個pdf時機器突然重啟,導致pdf檔案損壞,打不開了。由於平時有邊看pdf邊做注釋的習慣,如果無法恢復,那麼就導致其中的所有的筆記丟失,這下損失會比較慘重。baidu了一下pdf修復軟體,無一能夠比較好地恢復pdf,並且保留其中的格式。google之後發現mupdf可以重寫pdf,於是嘗...
控制檔案損壞的恢復
一 控制檔案損壞的恢復 乙個檔案 損壞單個控制檔案是比較容易恢復的,因為一般的資料庫系統,控制檔案都不是乙個,而且所有的控制檔案都互為映象,只要拷貝乙個好的控制檔案替換壞的控制檔案就可以了。方法1 使用spfile多路復用 sql shutdown immediate 資料庫已經關閉。已經解除安裝資...