關於HDFS Block損壞恢復

2021-09-17 01:49:54 字數 1646 閱讀 1018

在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 資料庫已經關閉。已經解除安裝資...