出现问题:
java.io.IOException: There appears to be a gap in the edit log. We expected txid ***, but got txid
是元数据丢失,如果元数据有备份的话比较好做,直接将备份的元数据覆盖掉确实的元数据
scp edits_0000000000000000041-0000000000000000043 root@master:/home/kqbigdata/hadoop-2.7.7/dfs/hadoop/nn/current
也可以使用命令hadoop namenode -recover恢复namenode,然后一路Y,c下去;
但是执行这次操作之前注意将current文件做一个备份,避免误删。
由于本集群目前没有备份元数据,所以恢复namenode之后,还有部分block块缺失,为了避免以后这种情况发生,我在hdfs-site.xml备份了一个元数据的目录
dfs.namenode.name.dir
file:///home/kqbigdata/hadoop-2.7.7/dfs/nn,///home/kqbigdata/hadoop-2.7.7/dfs/nnStandby
注:这里的元数据备份的目录,最好指定其他磁盘,这样的话,如果一块磁盘损坏了,可以从其他磁盘的对应目录下恢复
出现问题:提示安全模式
1.如果出现在集群刚开启的时候,是正常现象,由于元数据的延迟加载
2.如果不是出现在集群刚开启的时候,在block块没有缺失的情况下,可以使用命令:
hdfs dfsadmin -safemode enter :开启安全模式
hdfs dfsadmin -safemode leave :关闭安全模式