也就是説,我們其實已經實際刪除了某些數據塊,但是記錄的元數據因為一些故障導致沒有進行同步,就會出現這種情況。
解決方法
首先強制退出安全模式:
hdfs dfsadmin -safemode forceExit
接着,我們進入 WEB 管理界面,刷新一下。
此時,我們就會發現那些數據塊丟失的文件,將這些文件按照路徑在 HDFS 中全部刪除即可。
如果你想要對文件進行恢復,那麼則需要請教相關專業人士,使用磁盤修復工具進行處理。
刪除完成後,我們重啓集羣,進入 WEB 界面查看是否正常:
如果刪除過程中遇到報錯,如下所示:
Permission denied: user=master, access=WRITE, inode=“/benchmarks/TestDFSIO”:root:supergroup:drwxr-xr-x
權限不足,無法進行寫操作。
我們需要先使用 root 賬號對操作目錄授權,或者直接關閉 HDFS 權限驗證。
方法一
# 使用 `root` 賬號對操作目錄授權
hdfs dfs -chmod -R 777 /benchmarks/TestDFSIO
方法二
不建議,會影響集羣安全。
# 直接關閉 HDFS 權限驗證,在 hdfs-site.xml 文件中添加如下配置:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
添加完成後,分發同步該文件,重啓集羣后生效。