java - hadoop 错误:找不到与图像文件对应的 MD5 文件
问题描述
有一个旧hadoop
系统(多年未使用),尝试重新启动集群(1 个主,2 个从)时,全部打开Linux
,出现错误,在namenode
.
错误输出:
2021-03-18 20:18:28,628 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.io.IOException: Failed to load image from FSImageFile(file=/home/xxx/tmp/hadoop/name/current/fsimage_0000000000000480607, cpktTxId=0000000000000480607)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:651)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:264)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:627)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:469)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:403)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:437)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:609)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:594)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1169)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1235)
Caused by: java.io.IOException: No MD5 file found corresponding to image file /home/xxx/tmp/hadoop/name/current/fsimage_0000000000000480607
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:736)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:632)
... 9 more
2021-03-18 20:18:28,631 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2021-03-18 20:18:28,633 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
更多信息:
- 从属数据节点的其中一个分区有坏的磁盘块,所以我已经删除了那个分区,
/etc/fstab
以便Linux
启动。因此,该从站的数据丢失了。
我试过的:
- 启动集群,包括所有 3 个节点,出现上述错误。
- 启动集群,排除坏的slave,因此只有2个节点,仍然出现上述错误。
问题:
- A. 错误是什么意思?
- B. 跟坏奴隶有关吗?
- C. 有没有在 namenode 上重新格式化 hdfs 文件系统的情况下恢复?
解决方案
应该有一个文件名为:
/home/xxx/tmp/hadoop/name/current/fsimage_0000000000000480607.md5
在与图像文件相同的位置。它将具有如下所示的内容:
177e5f4ed0b7f43eb9e274903e069da4 *fsimage_0000000000000014367
只需获取 fsimage 文件的 md5 和:
md5sum fsimage_0000000000000480607.md5
然后创建一个新的 md5 文件,如下所示:
xxxxxx *fsimage_0000000000000480607.md5
其中 xxxxxx 是来自 md5 命令的 md5sum。
推荐阅读
- php - Curl 仅返回 NULL
- docker - 为什么我无法运行新创建的 Docker 映像?
- python - 在 Python-Flask 应用程序中单击特定 html 页面的导航栏中的链接时退出会话
- java - EditText 焦点和光标选择正在输入到错误的输入字段
- python - 通过强化学习回归
- hyperledger-composer - Hyperledger 作曲家生成器:尝试从不存在的源复制(不支持 Angular 的概念)
- networking - 当前在两个客户端之间同步流视频的最佳实践是什么?(目的地间多媒体同步)
- jenkins - 如何使用groovy检索一个jenkins文件夹中所有文件夹的属性->环境变量?
- excel - 有没有办法在活动标签上使用鼠标悬停功能来弹出 gif?
- elasticsearch - Elasticsearch:如何在过滤器查询中使用通配符