Error: java.io.IOException: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block


在Hive命令行執行查詢時,出現錯誤

Error: java.io.IOException: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-787476470-192.168.152.10-1573351961380:blk_1073742171_1347 file=/user/hive/warehouse/db_hive.db/emp/emp.txt (state=,code=0)
根據信息得知是無法找到數據塊,登陸webUI監控界面,master:50070,發現只有一個DataNode slave2, slave1沒有啟動。

cd到slave1的sbin/目錄下,手動啟動DataNode,刷新監控界面,slave1的datanode已經啟動了,Hive查詢也不再報錯。

[root@slave1 sbin]# ./hadoop-daemon.sh start datanode

 

 

 

在HDFS中,提供了fsck命令,用於檢查HDFS上文件和目錄的健康狀態、獲取文件的block信息和位置信息等。
fsck命令必須由HDFS超級用戶來執行,普通用戶無權限。

查看文件中損壞的塊(-list-corruptfileblocks)
[root@master sbin]$ hdfs fsck / -list-corruptfileblocks

將損壞的文件移動至/lost+found目錄(-move)
[root@master sbin]$ hdfs fsck / -move

刪除損壞的文件(-delete)
[root@master sbin]$ hdfs fsck / -delete

檢查並列出所有文件狀態(-files)
[root@master sbin]$ hdfs fsck / -files

查看dfs塊的報告

[root@master sbin]$ hdfs dfsadmin -report

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM