因磁盘爆满而导致NameNode HA无法启动

场景回顾:

测试集群节点分配:35,36是namenode且开启HA,37,38,39即作为datanode,又作为journalnode。

某时间 38节点磁盘爆满,集群中hdfs及依赖的服务全部宕掉。

之后虽然将38节点清除一部分多余数据,但集群服务仍然不正常:namenode启动的时候两个都是standby,几分钟后自动关闭;datanode正常;journal正常;zkfc正常

调查过程:

查看namenode日志,显示一直在尝试连接journal,并显示

2017-08-14 17:03:58,669 WARN  client.QuorumJournalManager (QuorumCall.java:waitFor(134)) - Waited 88071 ms (timeout=90000 ms) for a response for selectInputStreams. Succeeded so far: [192.168.0.37:8485]
2017-08-14 17:03:59,670 WARN  client.QuorumJournalManager (QuorumCall.java:waitFor(134)) - Waited 89072 ms (timeout=90000 ms) for a response for selectInputStreams. Succeeded so far: [192.168.0.37:8485]
2017-08-14 17:04:00,600 WARN  namenode.FSEditLog (JournalSet.java:selectInputStreams(280)) - Unable to determine input streams from QJM to [192.168.0.37:8485, 192.168.0.38:8485, 192.168.0.39:8485]. Skipping.
java.io.IOException: Timed out waiting 90000ms for a quorum of nodes to respond.
	at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:137)
	at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.selectInputStreams(QuorumJournalManager.java:471)
	at org.apache.hadoop.hdfs.server.namenode.JournalSet.selectInputStreams(JournalSet.java:278)
	at org.apache.hadoop.hdfs.server.namenode.FSEditLog.selectInputStreams(FSEditLog.java:1528)
	at org.apache.hadoop.hdfs.server.namenode.FSEditLog.selectInputStreams(FSEditLog.java:1552)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:652)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:294)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1015)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:690)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:688)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:752)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:992)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:976)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1686)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1754)

根据这些错误信息,尝试了很多网上的方案都没有起作用。

在启动namenode的时候观察hadoop UI中的Startup Progress

发现

1. Loading edits的步骤没有显示加载edit文件直接显示了100%

2. Safe mode?的awaiting reported blocks加载到98%左右就失败

以上现象,分析可能跟数据完整性有关,datanode中的数据丢失不会导致namenode启动问题。那就只剩下namenode中的元数据了。

去37,38,39节点 分别进入journal元数据目录,发现38节点的edit文件比其他俩节点少。

将37节点中的edit文件覆盖到38中,重启namenode,问题解决?

时间: 2024-11-14 21:32:03

因磁盘爆满而导致NameNode HA无法启动的相关文章

namenode ha切换优化

一.背景 目前namenode使用了ha的部署模式,但系统会经常出现ha的自动切换(namenode节点其实正常).经过调研发现可能的原因如下: HealthMonitor check本地namenode的rpc端口时超时,导致HealthMonitor认为namenode挂掉. zk上的session timeout,导致丢掉当前持有的active锁(temp节点),引起自动切换. 二.优化 下面的优化将针对1)和2)调整相应的超时参数,看是否起效.修改core-site.xml     <!

Namenode HA原理详解

社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 原文见 http://xiguada.org/namenode-ha-principle/ 为什么要Namenode HA? 1.NameNode High Availability即高可用. 2.NameNode 很重要,挂掉会导致存储停止服务,无法进行数据的读写,基于此NameNode的计算(MR,Hive等)也无法完成. Namenode HA 如何实现,关

Hadoop 2.0 NameNode HA和Federation实践

参考链接:Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基于Hadoop的技术解决方案,由于行业的特殊性,客户对服务的可用性有着非常高的要求,而HDFS长久以来都被单点故障的问题所困扰,直到Apache Hadoop在2012年5月发布了2.0的alpha版本,其中MRv2还很不成熟,可HDFS的新功能已经基本可用,尤其是其中的的High Ava

HDFS Federation和NameNode HA的搭建

1. HDFS Federation产生背景 在Hadoop 1.0中,HDFS的单NameNode设计带来诸多问题,包括单点故障.内存受限制约集群扩展性和缺乏隔离机制(不同业务使用同一个NameNode导致业务相互影响)等,为了解决这些问题,Hadoop 2.0引入了基于共享存储的HA解决方案和HDFS Federation,这里重点介绍HDFS Federation. HDFS Federation是指HDFS集群可同时存在多个NameNode,这些NameNode分别管理一部分数据,且共享

Hadoop2之NameNode HA详解

在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNode,但是它并不是NameNode的备份,它只是NameNode的一个助理,协助NameNode工作,SecorndaryNameNode会对fsimage和edits文件进行合并,并推送给NameNode,防止因edits文件过大,导致NameNode重启变慢),这是Hadoop1的不可靠实现. 在Hadoop2中这个问题得

Hadoop NameNode HA模式的搭建以及原理

搭建HA(高可用)模式的集群参见(http://blog.cheyo.net/92.html) 转自:http://www.it165.net/admin/html/201407/3465.html 社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 为什么要Namenode HA? 1. NameNode High Availability即高可用. 2. NameNode 很重要,挂掉会导致存储停止服务,无法进

harbor磁盘爆满,执行垃圾回收清理镜像

1.在使用Jenkins发版操作时发现,推送私有仓库harbor报错: received unexpected HTTP status: 500 Internal Server Error 2.想要登陆harbor查看,发现harbor界面登陆报错:登陆校验失败 3.登陆服务器,查看harbor的日志,在redis.log中找到报错信息 提示磁盘爆满 4.登陆ranchar,发现rancher也挂掉了,执行:docker ps -a |grep ranchar ,拿到ranchar的容器id,执

Hadoop2 NameNode HA配置

Hadoop2 NameNode HA配置 Hadoop2 官方提供了两种NameNode HA的实现方式,分别基于QJM和NFS,这里以基于QJM的HDFS HA为例. 实验环境 系统版本:CentOS release 6.4 (Final) Hadoop版本:Apache Hadoop2.5.1 Hive版本:Hive 0.13.1 IP列表 IP Hostname NameNode DataNode RM NodeManager JournalNode 192.168.20.54 had1

namenode ha by zookeeper

tickTime=2000 initLimit=10 syncLimit=5 clientPort=2181 dataDir=/home/tim/zkdata server.1=tim-dn1:2888:3888 server.2=tim-dn2:2888:3888 server.3=tim-dn3:2888:3888 core-site.xml <configuration> <!-- <property> <name>fs.defaultFS</name