NameNode故障后,可以采用两种方法恢复数据。

方法一:将 SecondaryNameNode 中数据拷贝到 NameNode 存储数据的目录

  1. kill -9 NameNode 进程
  2. 删除 NameNode 存储的数据(/opt/module/hadoop-3.1.3/data/tmp/dfs/name)
 rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/*
  1. 拷贝 SecondaryNameNode 中数据到原 NameNode 存储数据目录
scp -r pbh@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary/* ./nam
e/
  1. 重新启动 NameNode
[pbh@hadoop102 hadoop-3.1.3]$ hdfs --daemon start namenode

方法二:使用-importCheckpoint 选项启动 NameNode 守护进程,从而将 SecondaryNameNode中数据拷贝到 NameNode 目录中

  1. 修改 hdfs-site.xml 中的
<property>
 <name>dfs.namenode.checkpoint.period</name>
 <value>120</value>
</property>
<property>
 <name>dfs.namenode.name.dir</name>
 <value>/opt/module/hadoop-3.1.3/data/dfs/name</value>
</property>
  1. kill -9 NameNode 进程
  2. 删除 NameNode 存储的数据(/opt/module/hadoop-3.1.3/data/dfs/name)
rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/*
  1. 如 果 SecondaryNameNode 不 和 NameNode 在 一 个 主 机 节 点 上 , 需 要 将SecondaryNameNode 存储数据的目录拷贝到 NameNode 存储数据的平级目录,并删除in_use.lock 文件
[pbh@hadoop102 dfs]$ scp -r pbh@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary ./
[pbh@hadoop102 namesecondary]$ rm -rf in_use.lock
[pbh@hadoop102 dfs]$ pwd 
/opt/module/hadoop-3.1.3/data/dfs
[pbh@hadoop102 dfs]$ ls
data name namesecondary
  1. 导入检查点数据(等待一会 ctrl+c 结束掉)
[pbh@hadoop102 hadoop-3.1.3]$ bin/hdfs namenode -importCheckpoint
  1. 启动 NameNode
[pbh@hadoop102 hadoop-3.1.3]$ hdfs --daemon start namenode
最后修改:2022 年 08 月 22 日
如果觉得我的文章对你有用,请随意赞赏