CDH集群主节点宕机恢复
1 情况概述
公司的开发集群在周末莫名其妙的主节点Hadoop-1的启动固态盘挂了,由于CM、HDFS的NameNode、HBase的Master都安装在Hadoop-1,导致了整个集群都无法使用,好在数据不在启动盘。
Hadoop-1的系统必须重装,但是不能重装集群,因为要将之前的数据全部保留恢复,所以只能通过集群恢复的手段将集群重新跑起来。
主要服务角色安装情况:
Hadoop-1:
CM,HDFS( NN,DN ),HBase(HMaster, RegionServer),YARN(NM),Zookeeper
Hadoop-2:
HDFS( SNN,DN ),HBase(HMaster, RegionServer),YARN(RM,NM),Zookeeper
Hadoop-3,Hadoop-4:
HDFS( DN ),HBase(RegionServer),YARN(NM),Zookeeper
说明:在写本文档的时候,出现此问题的研发集群已经恢复完成,但是很遗憾没有留下证据,所以这里利用了一个临时的集群重现该问题,并执行恢复
2 面临的问题
- Hadoop-1系统重装后CM必须得重装,那么怎么将其余好的节点重新加入到新的CM。
- 新建的NameNode怎么重新使用原来的NameNode的数据,怎么重新管理其余结点的DataNode。
3 恢复记录
3.1 重装系统
最小化安装CentOS 64位系统,
准备好基础环境,恢复到和原来的Hadoop-1一样。
注意要点:
- 重新配置Hosts
- 重新配置ssh的无密钥登录。
- 重新配置时钟服务
- 重新配置CentOS,及CM、CDH的网络镜像源
- 挂载数据盘到原来的位置
3.2 重装CM
在Hadoop-1中利用CM的引导文件cloudera-manager-installer.bin重装CM服务,剩下的就是界面操作。前面的步骤和搭建新集群一样,以下为截图:
1.

在到这个界面之前的步骤和安装全新集群基本一样的,因此之前的步骤参照集群搭建文档即可,重点就是这个图,这个地方是选择服务角色的安装主机,一定要和之前的集群保持一致

上面这张图是更改后的,根据原来的集群,NameNode在test-hadoop-1上,而SNN在test-hadoop-2上面,每个节点都存在DataNode,至于HBase的配置还是理论上说可以随意(因为它的数据是在HDFS和Zookeeper上只要它俩对了,HBase的数据自然就恢复了。),但是还是建议和原来的保持一致。
Zookeeper要保持和原来一致。
Yarn主要用于计算,其实也可以是随意的,但是它有NM,所以还是建议保持和原来一致
CM,Spark可以配置是可以随意的,因为这两个东西跟我们的数据没太大关系。
接着往下走,

要是安装了要是原来的集群的自定义数据库不再主节点上,则直接在这里指过去使用原来的数据库,否则直接联本地的。
接着往下走,

这一步是重中之重,一定要注意将数据目录指定到原来的集群的数据目录,保持高度一致,对应修改完就可以启动了。

启动后HDFS报错,因为NameNode会去尝试format,但是已经有数据了,所以format失败,那么基本上意味着我们数据恢复成功80%了,我们进入CM的控制界面,重启所服务,要是不出意外,集群修复就完成了。
4 可能的错误
4.1 Zookeeper
若启动时报zookeeper启动异常,

完整日志如下:

这个错是个很奇怪的错,只发生在新建的主节点上,是因为挂载原来的数据盘时,原来的目录及文件的用户及用户组发生了变化,如下:
新建的主节点test-hadoop-1:

原来的数据结点test-hadoop-2:

可以看到在新建的主节点test-hadoop-1中zookeeper的用户和用户组都成了solr,我们只需要将其修改过来就好了。
再次启动zookeeper若报如下错误:

则在对应的节点重启CM的agent
再次启动zookeeper:
其他的权限错误,就不再说了,对照着改就好了。
5 总结
通过这次集群恢复,有以下几点收获,
- CM搭建的Hadoop集群中服务和数据是分离的,就算是搭建一个全新的集群,只要将数据目录指定到原来的目录,就可以使用原来的数据。(按理说所有Hadoop集群都是这样。)
- 要大胆尝试。因为之前想到集群的主节点都挂了,无法避免重新搭建,数据只能全清空,迫于数据的重要性,在测试集群试验了把新搭集群但是数据目录还是原来的,发现hdfs,hbase,kafka,zookeeper的数据都还是原来的,并没有置空。
CDH集群主节点宕机恢复的更多相关文章
- mysql group replication 主节点宕机恢复
一.mysql group replication 生来就要面对两个问题: 一.主节点宕机如何恢复. 二.多数节点离线的情况下.余下节点如何继续承载业务. 在这里我们只讨论第一个问题.也就是说当主结点 ...
- redis集群节点宕机
redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务.这个备用的redis称为从节点(slave). 1. ...
- Vertica集群单节点宕机恢复方法
Vertica集群单节点宕机恢复方法 第一种方法: 直接通过admintools -> 5 Restart Vertica on Host 第二种方法: 若第一种方法无法恢复,则清空宕机节点的c ...
- 相同版本的CDH集群间迁移hdfs以及hbase
前言 由于项目数据安全的需要,这段时间看了下hadoop的distcp的命令使用,不断的纠结的问度娘,度娘告诉我的结果也让我很纠结,都是抄来抄去, 还好在牺牲大量的时间的基础上还终于搞出来了,顺便写这 ...
- 朝花夕拾之--大数据平台CDH集群离线搭建
body { border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body ...
- CDH集群安装&测试总结
0.绪论 之前完全没有接触过大数据相关的东西,都是书上啊,媒体上各种吹嘘啊,我对大数据,集群啊,分布式计算等等概念真是高山仰止,充满了仰望之情,觉得这些东西是这样的: 当我搭建的过程中,发现这些东西是 ...
- CDH集群频繁告警(host频繁swapping)
最近CDH集群频繁告警,原因是某些host频繁swapping,极大影响了集群的性能. 后来发现有个设置(/proc/sys/vm/swappiness)需要修改,默认值60 Setting the ...
- kafka 集群部署 多机多broker模式
kafka 集群部署 多机多broker模式 环境IP : 172.16.1.35 zookeeper kafka 172.16.1.36 zookeeper kafka 172.16 ...
- Cloudera Manager安装_搭建CDH集群
2017年2月22日, 星期三 Cloudera Manager安装_搭建CDH集群 cpu 内存16G 内存12G 内存8G 默认单核单线 CDH1_node9 Server || Agent ...
随机推荐
- pyserial 16进制显示与发送
pyserial 16进制显示与发送 http://www.centoscn.com/python/2013/0817/1320.html 十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCI ...
- androidannotations 简单复制与点击事件(1)
现在最火的android开发框架 简单描述一下 这一篇简单描述寻找控件以及事件的使用 1.该方法可以不用写setconteview @EActivity(R.layout.activity_main) ...
- android培训机构排名
Android开发行业的热度打开了Android培训领域的市场,我们会发现有很多的Android培训机构都在大势宣传自己的师资.就业情况.教学环境等 ,然而到底要选择哪个呢?令很多的人困惑.2015年 ...
- 通过jquery js 实现幻灯片切换轮播效果
观察各个电商网址轮播图的效果,总结了一下主要突破点与难点 1.->封装函数的步骤与具体实现 2->this关键字的指向 3->jquery js函数熟练运用 如animate 4-& ...
- 深入NSQ 之旅[转载]
介绍 NSQ是一个实时的分布式消息平台.它的设计目标是为在多台计算机上运行的松散服务提供一个现代化的基础设施骨架.这篇文章介绍了 基于go语言的NSQ的内部架构,它能够为高吞吐量的网络服务器带来 性能 ...
- Android安全开发之ZIP文件目录遍历
1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在“../”的字符串,攻击者可以利用多个“../”在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原有的文件.如果被覆盖掉的文件是动态链接s ...
- 【腾讯Bugly干货分享】微信mars 的高性能日志模块 xlog
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581c2c46bef1702a2db3ae53 Dev Club 是一个交流移动 ...
- 利用gulp搭建本地服务器,并能模拟ajax
工作中可能会用到的小工具,在此记录一下.可以实现的功能有: 本地http服务器 页面实时刷新 可以模拟ajax请求 第一步,新建package.json文件.用到了gulp.gulp-webserve ...
- The Hacker's Guide To Python 单元测试
The Hacker's Guide To Python 单元测试 基本方式 python中提供了非常简单的单元测试方式,利用nose包中的nosetests命令可以实现简单的批量测试. 安装nose ...
- 老司机学新平台 - Xamarin Forms开发框架二探 (Prism vs MvvmCross)
在上一篇Xamarin开发环境及开发框架初探中,曾简单提到MvvmCross这个Xamarin下的开发框架.最近又评估了一些别的,发现老牌Mvvm框架Prism现在也支持Xamarin Forms了, ...