TODO: 还有没搞清楚的地方。
1、为了方便演示,先做好namenode检查点的配置。见控制namenode检查点发生的频率。
2、启动hadoop,保证所有节点都正常。
3、将namenode节点上dfs.name.dir 指定目录(即 name 目录)中的内容全部删除,以模拟故障发生情况。
4、关闭hadoop,jps查看,发现namenode没有启动成功。
- 查看namenode节点的$HADOOOP_HOME/logs/目录下namenode的日志,发现异常:java.io.IOException: NameNode is not formated。
- 同时,查看hdfs上的目录及文件情况,ls后发现报错
5、关闭hadoop,重新格式化namenode
6、进入namenode节点的上dfs.name.dir 指定目录(即 name 目录),发现已经生成了新的内容。编辑current中的VERSION。将namespaceID的值改为集群中任一datanode中的namespaceID(即原来的值)
7、删除current中新生成的fsimage
8、将secondarynamenode的fsimage拷贝过来。
注意:我拷贝的是namesecondary/image/目录下的。网上有资料说是namesecondary/current下的,但我的current中并没有内容。
9、启动hadoop
10、启动完毕发现一切正常了。
【TODO】模拟namenode崩溃并恢复
时间: 2024-10-12 20:23:30