描述

Ambari管理的Hadoop生产集群开启了HA,在运行期间,namenode1(nn1)为活跃(active)namenode,namenode2(nn2)为备用(standby)namenode。

nn1主机在运行期间宕机,nn2切换为active namenode,重启nn1主机,系统启动失败。

硬件检测正常,排除硬件问题。

最优的解决方案是修复操作系统,尝试多种方法,结果失败。

这时,集群故障已经持续将近两周。

接下来能想到的解决方案是重装操作系统,然后恢复主机上的原有服务和数据。

思路

现状

Hadoop集群的两个namenode是nn1和nn2,其中nn1主机宕机,集群只有nn2这个namenode。虽然集群运行状态正常,但是已经影响到业务。

思考

从理论上来看,Hadoop的主备namenode,备用namenode除了提供高可用的功能外,还负责更新HDFS元数据,也就是secondarynamenode的功能,定期处理edits和fsimage。所以处于这种状况的Hadoop集群,功能是不完整的,但是可以坚持一段时间,这段时间就可以尽快恢复nn1服务。

这种情况下,需要重装nn1主机的操作系统,恢复ambari-agent服务,然后恢复nn1主机原有的服务,主要是Hadoop服务。

想到的恢复服务的方法有两个。

第一个是利用Ambari进行Hadoop的HA回滚。这种方法会根据正常运行的namenode(这里指nn2),重新生成一个namenode(这里指新的nn1),这个操作可能会用nn2的数据覆盖nn1的原有的数据。具体我这里没有研究。

第二个是在新系统上完整的复原服务。我是这么想的,现在的集群情况,可以认为nn1主机处于关机状态,只要开机启动服务,就可以让Hadoop自行恢复。现在是nn1主机的操作系统出问题,需要重装系统,之后所要做的事就是,在新系统上还原服务状态,使其最后相当于主机关机状态,然后开机启动服务。从理论上说,这个方法可以比较完整的恢复服务和状态。

我是按照第二个方法做的,这个是我自己的猜想,需要模拟故障环境进行验证。不过结果证明这个方法是可行的。下面讨论一下恢复过程。

恢复方案

目标是在新安装的操作系统上还原服务环境,然后恢复服务。

  1. 备份,备份宕机主机上的服务的关键目录
  2. 重装操作系统
  3. 配置预安装环境
  4. 恢复ambari-agent
  5. 恢复Hadoop服务

重要:如要参考此方案恢复类似问题,建议先在故障模拟环境中测试。

恢复操作

备份

备份宕机主机上的服务的关键目录,关键目录如下表:

目录 说明
/etc/ambari-agent ambari-agent的配置目录
hdfs的dfs.namenode.name.dir配置指定的目录 在生产环境中,一般是一个单独的磁盘
hdfs的dfs.namenode.edits.dir配置指定目录 默认使用dfs.namenode.name.dir的参数

重装操作系统

操作系统环境要和之前的操作系统环境保持一致,包括网络环境,主机名等。

注意IP和主机名一定要保持一致。

配置预安装环境

  1. 登录操作系统,确认主机名和IP与之前环境保持一致。
  2. 从其他的正常节点上复制/etc/hosts文件到本机。
  3. 设置ambari-server主机到新主机的免密登录。
  4. 关闭防火墙。
  5. 设置selinux配置,编辑/etc/selinux/config,将SELINUX的参数值修改为disabled。
  6. 设置jdk,需要和原环境保持一致
  7. 同步时间
  8. 复制安装源文件ambari.repo到新主机上。

还原ambari-agent

安装ambari-agent

yum install ambari-agent

复制以下目录到对应目录

/etc/ambari-agent

还原Hadoop服务

安装软件包

安装hdp-select

yum install hdp-select

安装Hadoop

需要安装对应的安装包,版本对应已安装的hdp版本号。

yum install hadoop_<version>-client \
hadoop_<version>-yarn \
hadoop_<version> \
hadoop_<version>-libhdfs \
hadoop_<version>-mapreduce \
hadoop_<version>-hdfs

还原服务数据

还原Hadoop元数据

如果Hadoop元数据存储在独立磁盘上,则直接挂载到配置目录并设置开机自动挂载。

如果Hadoop元数据存储在操作系统目录上,则将之前备份的数据直接放到对应目录。

从宕机的namenode节点上复制,也就是之前备份的数据。生产环境中,namenode元数据一般放在独立磁盘中。

注意目录的用户权限,可以参考另一台正常的namenode的信息。

还原配置目录

从另一台正常的namenode主机上,将配置目录复制到新系统的对应目录。

复制之后,目录软链可能不对,需要手动设置。

启动服务

启动ambari-agent

ambari-agent start

在Ambari Web上启动Hadoop服务,启动过程中可能遇到权限问题,需要根据提示修改目标的权限。顺利的话,服务应该可以恢复正常。

后记

在整个恢复过程中,还算比较顺利,只在启动服务时遇到了用户权限问题。

在服务恢复后,在最初几天的观察中,整个集群没有异常。

希望本篇文章对遇到同样问题的朋友有用。

Hadoop HA namenode宕机环境恢复相关推荐

  1. Redis中主、从库宕机如何恢复?

    作者 | tamir_2017 来源 | blog.csdn.net/py_tamir/article/details/82555338 1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是 ...

  2. linux模拟主机宕机,AIX HA模拟宕机--维护磁带机

    AIX HA模拟宕机--维护磁带机 一.概述: 2013年11月15日要对辽宁红沿河核电站两台小机进行小机的磁带机维护操作,需要停机维护,下面是对小机和数据库的操作步骤: 二.操作步骤: 1.备份cl ...

  3. Redis 中哨兵sentinel 机制、从宕机及恢复、主库宕机及恢复解决方案

    目录 什么是哨兵 原理 环境 设置哨兵 从宕机及恢复 主宕机及恢复 配置多个哨兵 1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运 ...

  4. 黑科技揭秘:阿里云如何做到从业务宕机到恢复业务运行只用一分半钟时间

    2018杭州云栖大会主论坛上,阿里云打造的混合云容灾方案惊喜亮相,并直接在现场进行了全过程的演示,凸显出阿里云技术的强大心智. 整个混合云容灾演示在5分钟内呈现了阿里云秒级RPO,分钟级RTO企业应用 ...

  5. 主域控宕机无法恢复后,如何配置辅助域控继续工作

    情况如下: 系统基础结构如下:一个主域控,一个辅助域控且都安装AD与DNS集成区. 如果:   主域控宕机且无法恢复,请问辅助域应做些什么才能替代主域控继续工作? 第一步:在辅助域控上清除主域控AD数 ...

  6. go中宕机与恢复 panic/recover 介绍

    目录 一.panic 宕机 二.recover恢复 三.panic和recover的关系 Go 语言可以在程序中手动触发宕机,让程序崩溃,这样开发者可以及时地发现错误,同时减少可能的损失.Go 语言程 ...

  7. AIX HA模拟宕机--维护磁带机

    一.概述: 2013年11月15日要对×××核电站两台小机进行小机的磁带机维护操作,需要停机维护,下面是对小机和数据库的操作步骤: 操作步骤: 1. 备份cluster的配置(AIX相关) #smit ...

  8. mysql宕机恢复_MySQL:数据库宕机以后恢复的过程?如何保证事务的ACID特性?

    首先介绍几个概念: REDO 为了重做对数据页(page)更改保存的信息,用于恢复 UNDO 为了撤销对数据记录(tuple)更改保存的信息,用于回滚事务 LSN(Log Sequence NO) 日 ...

  9. 恢复Redis中主、从库宕机

    1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运行正常: 主数据出现故障后自动将从数据库转化为主数据库: 2.原理 单个哨兵的架构 ...

最新文章

  1. 【总结整理】如何做需求分析(转)
  2. MATLAB从入门到精通:MATLAB矩阵操作
  3. OpenCV C++ 07 - Histogram Equalization of a Color image with OpenCV
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1071:菲波那契数
  5. Linux文件IO-例会笔记总结
  6. java 虚基类_重拾C++之虚函数和虚基类以及抽象类
  7. Oulipo(POJ-3461)
  8. 注解返回html页面,【提问】ajax请求返回整个html页面
  9. U盘安装系统时黑屏! 无法进入解决办法
  10. win10电脑任务栏假死状态,点击无反应问题
  11. 2018产品经理都在入驻的平台——汇新云
  12. linux版flash下载工具,Linux系统下安装Flash浏览器插件的方法
  13. python代码补全_python命令自动补全
  14. win7 加密oracle修正,win7 远程连接服务器出现身份验证错误,又找不到加密Oracle修正...
  15. 深度学习图像分类(六):Stochastic_Depth_Net
  16. 索引是什么,如何实现?
  17. 求一个方阵的主对角线及次对角线的和(C语言)(二维数组)
  18. 48V LDO三端稳压IC 60v 100V 300V电源降压芯片系统解决方案
  19. 低端Windows平板汇总
  20. Netty入门 -- 什么是Netty?

热门文章

  1. 变分自编码器原理解析
  2. JS知识资源一站式集锦
  3. 远程连接工具putty与mtputty
  4. 2022 PlantUML 这款 IDEA 插件能搞,流程图、架构图,N种图... 简直神器!
  5. linux不解压查看gz文件内容,linux下如何不解压tar.gz文件查看其中的文件大小
  6. ifconfig eth Rx error
  7. 智能语音标注工具小记
  8. GPC凝胶色谱理论和应用(二)
  9. java编写家庭收支记录,Java家庭收支记账小项目(java基础)
  10. mysql中的存储过程是什么意思_mysql存储过程是什么