微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HDFS恢复非HA状态

文章目录

0x00 文章内容
  1. 恢复非HA状态
  2. 删除HA状态时多余的文件

说明:此教程的上一篇教程是:HDFS的高可用性HA配置实战,请先学习上一教程。如果没有进行HA的配置,则不需要操作此教程。

0x01 恢复非HA状态
1. 备份并恢复HA配置文件

a. 如启动了集群,先关闭集群:
stop-dfs.sh
b. 备份HDFS的HA配置文件(以后可能会用到,所以备份一下):

mv hdfs-site.xml hdfs-site.xml_ha
mv core-site.xml core-site.xml_ha

c. 还原非HA的配置文件(我们在上一教程已经备份了)

mv hdfs-site.xml_bak hdfs-site.xml
mv core-site.xml_bak core-site.xml

d. 将配置同步到slave1和slave2

scp hdfs-site.xml core-site.xml hadoop-sny@slave1:~/bigdata/hadoop-2.7.5/etc/hadoop
scp hdfs-site.xml core-site.xml hadoop-sny@slave2:~/bigdata/hadoop-2.7.5/etc/hadoop
2. 恢复master的Edits Log

a. 拷贝master上journalNode中的Edits Log数据到master的NameNode所管理的Edits Log目录(注意此处不能覆盖)
cp -i ~/bigdata/dfs/journal/data/mycluster/current/edits_0* ~/bigdata/dfs/name/current/
此过程会提示是否覆盖,输入n,回车表示不覆盖。

b. 解析:如果不拷贝过去,启动集群的时候,你可能会发现master上namenode进程没有启动起来,去看报错日志。会报master上缺失个别edits.log,这是因为在上一次教程时,我们试验了几次master、slave1的主从替换,在master上的edits.log其实有可能是不完整的。解决方法可以去把slave1的拷贝到master上,但是如果内容很多的话,步骤就比较繁琐,所以我们可以直接去同步journalNode里面的数据过去即可。

注意:此处用-i参数,用途是若目的文件已经存在时,在覆盖时会先询问是否真的动作。否则cp会认将journal里面的数据全部覆盖current下面的edits_0*,而我们这里只是将缺的放过去。

如果不想按n,可以执行这一句,awk相关知识请自行搜索资料:
awk 'BEGIN { cmd="cp -ri ~/bigdata/dfs/journal/data/mycluster/current/edits_0* ~/bigdata/dfs/name/current/"; print "n" |cmd; }'

在这里插入图片描述

0x02 校验结果

a. 启动HDFS,发现我们就恢复到了最开始的情况, 而且资源也还在。
start-dfs.sh
如果发现上面恢复master的Edits Log这一步还是无法启动namenode,则用第a步的方式。
PS:
日志路径为cd $HADOOP_HOME/logs,如hadoop-hadoop-sny-namenode-master.log为master的日志。如果发现~/bigdata/dfs/name/current/中有重复的,则用journal里的。

可用下面命令查看报错的信息:
tail -fn200 hadoop-hadoop-sny-namenode-master.log

0x03 删除HA状态时多余的文件
1. 删除zookeeper上的相关数据

a. 启动Zookeeper客户端
zkServer.sh start
zkCli.sh
b. 删除HA相关节点

delete /hadoop-ha/mycluster/ActiveBreadCrumb
delete /hadoop-ha/mycluster
delete /hadoop-ha

在这里插入图片描述

也可多级删除
rmr /hadoop-ha

2. 删除journalNode管理的数据

a. master、slave1、slave2上均需执行
rm -r ~/bigdata/dfs/journal/*

3. 删除slave1上NameNode管理的数据

a. 在slave1上执行
rm -r ~/bigdata/dfs/name/*

0xFF 总结
  1. HA相关文章,有时间会补充更多:
    HDFS的高可用性HA配置实战
    在HDFS的HA模式下配置HBase

  2. HA的原理是非常重要的,而学习的话,其实用非HA状态即可,但是HA的实操也是比较重要的,有利于理解。


作者简介:邵奈一
全栈工程师、市场洞察者、专栏编辑
| 公众号 | 微信 | 微博 | CSDN | 简书 |

福利:
邵奈一的技术博客导航
邵奈一 原创不易,如转载请标明出处。


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐