今天发现我们的集群namenode启动不了了,报错如下图
关键在于在secondarynamenode报错停止之后,namenode开始创建edits.new文件记录新的操作元数据,然后不知道是由于什么问题导致的这个元数据加载报错。
按照网上的一下资料恢复了集群,但是丢失了n多数据
4.恢复
制造namenode宕机的情况
1) kill 掉namenode的进程
Java代码
1. [root @master name]# jps
2. 11749 NameNode
3. 12339 Jps
4. 11905 JobTracker
5. [root@master name]# kill 11749
2)删除dfs.name.dir所指向的文件夹,这里是/data/work/hdfs/name
Java代码
1. [root @master name]# rm -rf *
删除name目录下的所有内容,但是必须保证name这个目录是存在的
3)从secondarynamenode远程拷贝namesecondary文件到namenode的namesecondary
Java代码
1. [root @master hdfs]# scp -r slave- 001 :/data/work/hdfs/namesecondary/ ./
4)启动namenode
Java代码
1. [root @master /data]# hadoop namenode –importCheckpoint
正常启动以后,屏幕上会显示很多log,这个时候namenode就可以正常访问了
5)检查
使用hadoop fsck /user命令检查文件Block的完整性
6)停止namenode,使用crrl+C或者会话结束
7)删除namesecondary目录下的文件(保存干净)
Java代码
1. [root @master namesecondary]# rm -rf *
8)正式启动namenode
Java代码
1. [root @master bin]# ./hadoop-daemon.sh start namenode
恢复工作完成,检查hdfs的数据
还有一个将edits的工作原理的,这里也记录一下