HDFS ファイル システムのヘルス チェックとデータ ブロックの修復
hdfs ファイル システムの健全性を確認します。
hdfs fsck / : 各ファイルのデータ ブロックが破損していないか、ルート ディレクトリから失われたかどうかを確認します。
[hadoop@ruozedata001 sbin]$ hdfs fsck /
Connecting to namenode via http://ruozedata002:50070/fsck?ugi=hadoop&path=%2F
FSCK started by hadoop (auth:SIMPLE) from /192.168.72.201 for path / at Wed Aug 21 00:29:22 CST 2019
Status: HEALTHY
Total size: 0 B
Total dirs: 7
Total files: 0
Total symlinks: 0
Total blocks (validated): 0
Minimally replicated blocks: 0
Over-replicated blocks: 0
Under-replicated blocks: 0
Mis-replicated blocks: 0
Default replication factor: 3
Average block replication: 0.0
Corrupt blocks: 0
Missing replicas: 0
Number of data-nodes: 3
Number of racks: 1
FSCK ended at Wed Aug 21 00:29:22 CST 2019 in 1 milliseconds
The filesystem under path '/' is HEALTHY
破損したファイルを削除します。 hdfs fsck / -delete (慎重に操作してください)
破損したファイルを手動で修復します。 hdfs debug
hdfs debug recoverLease -path 文件位置 -retries 重复次数
hdfs debug recoverLease -path /xxx/yyy/aa.txt -retries 10
自動修復
データブロックが破損した場合、hdfsは自動的に破損したデータブロックを修復します。
DN ノードがディレクトリスキャン (データノードが内部ビレッジとディスク データセット ブロックをチェックする) 操作を実行する前に、損傷は検出されません。
ディレクトリスキャンの動作チェック間隔は6時間です
dfs.datanode.directoryscan.interval:21600
DN が NN へのブロックレポートを実行する前に、データ ブロックは復元されません。つまり、ブロックレポート操作は 6 時間の間隔で実行されます。
dfs.blockreport.intervalMsec : 21600
最後に、NN がブロックレポートを受信すると、回復操作が実行されます。
実稼働環境では、破損したデータ ブロックを修復するために手動修復方法が使用される傾向があります。