Hadoop HA namenode宕机环境恢复
描述
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主机的操作系统出问题,需要重装系统,之后所要做的事就是,在新系统上还原服务状态,使其最后相当于主机关机状态,然后开机启动服务。从理论上说,这个方法可以比较完整的恢复服务和状态。
我是按照第二个方法做的,这个是我自己的猜想,需要模拟故障环境进行验证。不过结果证明这个方法是可行的。下面讨论一下恢复过程。
恢复方案
目标是在新安装的操作系统上还原服务环境,然后恢复服务。
- 备份,备份宕机主机上的服务的关键目录
- 重装操作系统
- 配置预安装环境
- 恢复ambari-agent
- 恢复Hadoop服务
重要:如要参考此方案恢复类似问题,建议先在故障模拟环境中测试。
恢复操作
备份
备份宕机主机上的服务的关键目录,关键目录如下表:
目录 | 说明 |
---|---|
/etc/ambari-agent | ambari-agent的配置目录 |
hdfs的dfs.namenode.name.dir配置指定的目录 | 在生产环境中,一般是一个单独的磁盘 |
hdfs的dfs.namenode.edits.dir配置指定目录 | 默认使用dfs.namenode.name.dir的参数 |
重装操作系统
操作系统环境要和之前的操作系统环境保持一致,包括网络环境,主机名等。
注意IP和主机名一定要保持一致。
配置预安装环境
- 登录操作系统,确认主机名和IP与之前环境保持一致。
- 从其他的正常节点上复制/etc/hosts文件到本机。
- 设置ambari-server主机到新主机的免密登录。
- 关闭防火墙。
- 设置selinux配置,编辑/etc/selinux/config,将SELINUX的参数值修改为disabled。
- 设置jdk,需要和原环境保持一致
- 同步时间
- 复制安装源文件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宕机环境恢复相关推荐
- Redis中主、从库宕机如何恢复?
作者 | tamir_2017 来源 | blog.csdn.net/py_tamir/article/details/82555338 1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是 ...
- linux模拟主机宕机,AIX HA模拟宕机--维护磁带机
AIX HA模拟宕机--维护磁带机 一.概述: 2013年11月15日要对辽宁红沿河核电站两台小机进行小机的磁带机维护操作,需要停机维护,下面是对小机和数据库的操作步骤: 二.操作步骤: 1.备份cl ...
- Redis 中哨兵sentinel 机制、从宕机及恢复、主库宕机及恢复解决方案
目录 什么是哨兵 原理 环境 设置哨兵 从宕机及恢复 主宕机及恢复 配置多个哨兵 1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运 ...
- 黑科技揭秘:阿里云如何做到从业务宕机到恢复业务运行只用一分半钟时间
2018杭州云栖大会主论坛上,阿里云打造的混合云容灾方案惊喜亮相,并直接在现场进行了全过程的演示,凸显出阿里云技术的强大心智. 整个混合云容灾演示在5分钟内呈现了阿里云秒级RPO,分钟级RTO企业应用 ...
- 主域控宕机无法恢复后,如何配置辅助域控继续工作
情况如下: 系统基础结构如下:一个主域控,一个辅助域控且都安装AD与DNS集成区. 如果: 主域控宕机且无法恢复,请问辅助域应做些什么才能替代主域控继续工作? 第一步:在辅助域控上清除主域控AD数 ...
- go中宕机与恢复 panic/recover 介绍
目录 一.panic 宕机 二.recover恢复 三.panic和recover的关系 Go 语言可以在程序中手动触发宕机,让程序崩溃,这样开发者可以及时地发现错误,同时减少可能的损失.Go 语言程 ...
- AIX HA模拟宕机--维护磁带机
一.概述: 2013年11月15日要对×××核电站两台小机进行小机的磁带机维护操作,需要停机维护,下面是对小机和数据库的操作步骤: 操作步骤: 1. 备份cluster的配置(AIX相关) #smit ...
- mysql宕机恢复_MySQL:数据库宕机以后恢复的过程?如何保证事务的ACID特性?
首先介绍几个概念: REDO 为了重做对数据页(page)更改保存的信息,用于恢复 UNDO 为了撤销对数据记录(tuple)更改保存的信息,用于回滚事务 LSN(Log Sequence NO) 日 ...
- 恢复Redis中主、从库宕机
1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运行正常: 主数据出现故障后自动将从数据库转化为主数据库: 2.原理 单个哨兵的架构 ...
最新文章
- 【总结整理】如何做需求分析(转)
- MATLAB从入门到精通:MATLAB矩阵操作
- OpenCV C++ 07 - Histogram Equalization of a Color image with OpenCV
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1071:菲波那契数
- Linux文件IO-例会笔记总结
- java 虚基类_重拾C++之虚函数和虚基类以及抽象类
- Oulipo(POJ-3461)
- 注解返回html页面,【提问】ajax请求返回整个html页面
- U盘安装系统时黑屏! 无法进入解决办法
- win10电脑任务栏假死状态,点击无反应问题
- 2018产品经理都在入驻的平台——汇新云
- linux版flash下载工具,Linux系统下安装Flash浏览器插件的方法
- python代码补全_python命令自动补全
- win7 加密oracle修正,win7 远程连接服务器出现身份验证错误,又找不到加密Oracle修正...
- 深度学习图像分类(六):Stochastic_Depth_Net
- 索引是什么,如何实现?
- 求一个方阵的主对角线及次对角线的和(C语言)(二维数组)
- 48V LDO三端稳压IC 60v 100V 300V电源降压芯片系统解决方案
- 低端Windows平板汇总
- Netty入门 -- 什么是Netty?