Hadoop错误之namenode宕机的数据恢复
情景再现:
在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即可;
问题就出在这个误删除上,当时是在namenode的hadoop/hdfs/目录下,然后就执行了一个可怕的命令
rm -rf data
rm -rf name #存储namenode永久性元数据目录
当时还不知道删除这个的可怕,以为只是误删除了普通数据而已,然后再转到datanode下再次执行删除,再启动datanode后就正常了,jps查看各项服务均已正常启动
然后晚上在执行一个job时,报错了,说目录不存在,到此我才意识到是我之前到误删导致到这个错误,当时把datanode节点调试成功后也没试试执行一个job验证hadoop环境到正确性。
然后我就手动建了一个日志说找不到到目录,重启后报错namenode is not formatted,就是说需要格式化namenode才行,到这里就傻眼了,格式化容易,可集群上几个t的数据可能就没了,这很阔怕。
解决历程:
首先重启集群,发现除了namenode外其他均成功启动,这个时候使用
hdfs dfs -ls /
这样的命令去查看hdfs文件系统,是无法查看的,应该是报错被拒绝。
我们去查看
http://192.168.1.148:50070/dfshealth.html#tab-datanode
这个目录,发现是无法访问了,然后再去查看每个数据节点的使用量,使用命令
df -lh
发现几个节点的使用量都不是为0,就是说集群的数据并没有被删除,还有恢复的可能,然后看到了几篇hadoop数据恢复的文章
1,hadoop主节点(NameNode)备份策略以及恢复方法
2,hadoop集群崩溃恢复记录
3,模拟namenode宕机:数据块损坏,该如何修复
还有一篇介绍数据存储的文章
4,hadoop HDFS存储原理
以下是正确的解决方案,耗时一天一夜,首先在本地伪分布式环境测试成功,然后移到集群环境中成功解决:
1、存在一个正常的hadoop环境,hdfs上存在多个文件及文件夹
2、删除name目录
3、stop-all.sh
4、执行namenode格式化操作
hadoop namenode -format
5、复制namesecondary/current下的VERSION文件夹里的三个id(clusterID,namespaceID,blockpoolID)到name/current的VERSION文件相应的值里
6、复制namesecondary/current文件夹下fsimage开头的镜像文件到name到相应目录下
7、start-all.sh
PS:这里要注意一点,namesecondary里和data里的clusterID值一样;name目录指的是hdfs-site.xml中dfs.name.dir代表的目录,这里是tmp/hdfs/name,同理data目录;因为没有配置secondary目录,所以采用的是默认的配置,所以namesecondary指的是tmp/dfs/namesecondary
Hadoop错误之namenode宕机的数据恢复的更多相关文章
- 存在单点故障的namenode宕机恢复测试
前提:如果namenode没有做HA,那么至少应该启用secondarynamenode,以便namenode宕机之后手动恢复数据 实验环境:3个节点(cenos 6.10) 测试前数据: 1.为了确 ...
- hadoop错误ERROR namenode.NameNode (NameNode.javamain(1657)) - Failed to start namenode java.net.BindException:Port in use:host1:50070
解决方法: 1.通过lsof -i:50070(lsof可以通过yum install lsof安装)查看,发现是mysql被占用了 2.修改mysql端口 从/usr/share/mysql/my- ...
- Hadoop调优 | NameNode主备宕机引发的思考
大家都知道在双十一这些电商大型营销活动期间,电商网站的访问量等是平时的N倍.每当这个时候到来,无论是开发还是运维人员都严阵以待生怕服务出现问题.很不幸,笔者的一个朋友在一家电商公司上班,在双十一时,恰 ...
- hadoop主节点(NameNode)备份策略以、恢复方法、操作步骤
一.dits和fsimage 首先要提到两个文件edits和fsimage,下面来说说他们是做什么的. 集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中 ...
- Hadoop NameNode判断 DataNode 节点宕机的时间
.namenode 如何判断datanode节点是否宕机? 先决条件: datanode每隔一段时间像namenode汇报,汇报的信息有两点 ()自身datanode的状态信息: ()自身datano ...
- ORA-04031错误导致宕机案例分析
今天遇到一起ORACLE数据库宕机案例,下面是对这起数据库宕机案例的原因进行分析.解读.分析过程中顺便记录一下这个案例的前因后果,攒点经验值,培养一下分析.解决问题的能力. 案例环境: 操作系统 ...
- hadoop错误FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOException There appears to be a gap in the edit log
错误: FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOExcep ...
- 前端通信:ajax设计方案(七)--- 增加请求错误监控、前端负载均衡以、请求宕机切换以及迭代问题修复
距离上个迭代过了很长时间,中间经历了很多事情,也在每个空余时间构思了这个迭代的东西以及下个迭代要做的东西.时间周期稍微长了,望见谅. 而且,至今这个开源库的start也已经到了165个了,会支持关注和 ...
- Hadoop 服务SYS CPU过高导致宕机问题
最近某hadoop集群多次出现机器宕机,现象为瞬间机器的sys cpu增长至100%,机器无法登录.只能硬件重启,ganglia cpu信息如下: 首先怀疑有用户启动了比较奇葩的job,导致不合理的系 ...
随机推荐
- 使用AForge.NET Framework打开摄像头并截图 C#
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == ...
- Pandas系列(一)-Series详解
一.初始Series Series 是一个带有 名称 和索引的一维数组,既然是数组,肯定要说到的就是数组中的元素类型,在 Series 中包含的数据类型可以是整数.浮点.字符串.Python对象等. ...
- kubernetes云平台管理实战: 最小的资源pod(二)
一.pod初体验 1.编辑k8s_pod.yml文件 [root@k8s-master ~]# cat k8s_pod.yml apiVersion: v1 kind: Pod metadata: n ...
- 一个QQ旋风的BUG
本人喜欢用QQ旋风下载工具,很不幸的是这个工具BUG太多了. 下载不同COOKIE,相同文件名.URL的文件时候会QQ旋风崩溃. 感兴趣可以试下.
- 关于PHP创建接口及调用接口的简短例子(本地)
********************************************************************************************** /*这是P ...
- git 20181119
不同分支间(a.b分支)合并部分文件 git ck b git ck a f1 f2 git配置 配置文件 系统git config --system --list 全局git config --gl ...
- Database学习 - mysql 视图/触发器/函数
- 【转载】使用sklearn优雅地进行数据挖掘
原文:http://www.cnblogs.com/jasonfreak/p/5448462.html 目录 1 使用sklearn进行数据挖掘 1.1 数据挖掘的步骤 1.2 数据初貌 1.3 关键 ...
- Node.js使用jszip实现打包zip压缩包
一.前言 最近有这样的一个需求,需要把两个同名的.mtl文件和.obj文件打包成一个同名的.zip压缩包.刚开始文件不多的时候,只有几个,或者十几个,甚至二三十个的时候,还能勉强接受手动修改,但是随着 ...
- Basic Calculator I && II && III
Basic Calculator I Implement a basic calculator to evaluate a simple expression string. The expressi ...