1. NameNode元数据丢失故障处理
NameNode故障后,可以采用如下两种方法恢复数据
1.1. 方法一:将SecondaryNameNode中数据拷贝到NameNode存储数据的目录
先模拟NameNode出现故障
1 | $ jps |
拷贝SecondaryNameNode中数据到原NameNode存储数据目录
1 | scp -r root@hadoop3:/usr/local/hadoop/tmp/dfs/namesecondary/* /usr/local/hadoop/tmp/dfs/name/ |
启动NameNode,此时数据已恢复
1 | hadoop-daemon.sh start namenode |
方法二:使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中
先模拟NameNode出现故障
1 | $ jps |
若SecondaryNameNode不和NameNode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录。如果在同一节点上,两个组件的数据目录默认就是平级目录,不必操作
1 | $ scp -r root@hadoop3:/usr/local/hadoop/tmp/dfs/namesecondary /usr/local/hadoop/tmp/dfs |
再删除namesecondary中的in_use.lock文件
1 | $ ls /usr/local/hadoop/tmp/dfs/namesecondary/ |
导入检查点数据(等待一会ctrl+c结束掉)。这一步不知道为什么出现错误FATAL namenode.NameNode: Failed to start namenode.java.lang.IllegalArgumentException: URI has an authority component,目前还没找到原因。
1 | hdfs namenode -importCheckpoint |
再启动namenode
1 | hadoop-daemon.sh start namenode |