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

时间:2019-11-20
本文章向大家介绍Error: java.io.IOException: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block,主要包括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

原文地址:https://www.cnblogs.com/lucas-zhao/p/11898320.html