因磁盘爆满而导致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,问题解决
因磁盘爆满而导致NameNode HA无法启动的更多相关文章
- docker引起服务器磁盘爆满
服务器异常 又是开开心心打开我心爱的服务器一天: 吔!这是嘛啊?我的服务器域名访问不了了,一直转圈圈超时了,好,打开ssh远程看看,吔!!!还是访问不了,宕机了?怀着一颗憋大便的心情打开了阿里云控制面 ...
- centos更换损坏硬盘uuid改变导致系统不能正常启动处理
1.因为挂载磁盘uuid错误导致,而系统在启动的时候,会读取fstab文件.来加载预设的硬盘到指定的分区目录,但读取到需要挂载的UUID的磁盘不存在,中断文件的读取,然后提示文件系统错误,不能解析UU ...
- 因磁盘空间不足导致HDFS的NameNode进入安全模式问题记录
因磁盘空间不足导致HDFS的NameNode进入安全模式问题记录,调用API上传及下载文件时报如下错误信息: org.apache.hadoop.ipc.RemoteException(org.apa ...
- hadoop2—namenode—HA原理详解
在hadoop1中NameNode存在一个单点故障问题,也就是说如果NameNode所在的机器发生故障,那么整个集群就将不可用(hadoop1中有个SecorndaryNameNode,但是它并不是N ...
- CDH4.1基于Quorum-based Journaling的NameNode HA
几个星期前, Cloudera发布了CDH 4.1最新的更新版本,这是第一个真正意义上的独立高可用性HDFS NameNode的hadoop版本,不依赖于特殊的硬件或外部软件.这篇文章从开发者的角度来 ...
- Hadoop2.0 Namenode HA实现方案
Hadoop2.0 Namenode HA实现方案介绍及汇总 基于社区最新release的Hadoop2.2.0版本,调研了hadoop HA方面的内容.hadoop2.0主要的新特性(Hadoop2 ...
- Hadoop2之NameNode HA详解
在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNode,但是它并不是NameN ...
- Namenode HA原理详解(脑裂)
转自:http://blog.csdn.net/tantexian/article/details/40109331 Namenode HA原理详解 社区hadoop2.2.0 release版本开始 ...
- 安装部署Apache Hadoop (完全分布式模式并且实现NameNode HA和ResourceManager HA)
本节内容: 环境规划 配置集群各节点hosts文件 安装JDK1.7 安装依赖包ssh和rsync 各节点时间同步 安装Zookeeper集群 添加Hadoop运行用户 配置主节点登录自己和其他节点不 ...
随机推荐
- zookeeper Java API 简单操作示例
本文主要介绍如何在java IDE中如何应用使用客户端与zookeeper服务器通信. 首先搭建maven环境,并在pom文件中加入zookeeper引用包: <!-- https://mvnr ...
- flex组合流动布局实例---利用css的order属性改变盒子排列顺序
flex弹性盒子 <div class="container"> <div class="box yellow"></div> ...
- 开源平台ghost博客系统
http://docs.ghost.org/installation/windows/ 不会安装的童鞋可以到这里论坛看看 此教程只说windows下的安装: mac的安装教程请移步这里 mac版安装 ...
- Android 生成keystore,两种方式
一.eclipse 中生成android keystore 建立任意一个android项目(例如:AntForAndroid) 右键AntForAndroid根目录弹出菜单->Android T ...
- mysql crete view
CREATE VIEW user_algo_view ASselect `u`.`userId` AS `UserId`,`u`.`userCode` AS `UserCode`,group_conc ...
- 【转】清空mysql一个库中的所有表的数据
方法1:重建库和表 用mysqldump --no-data把建表SQL导出来,然后drop database再create database,执行一下导出的SQL文件: 方法2:生成清空所有表的SQ ...
- Django框架-模板系统
来看一段代码 def current_datetime(request): now = datetime.datetime.now() html = "<html><bod ...
- android studio中取消关联git
Android studio取消关联Git 步骤如下 settings->version control 这里是已经取消关联的 如果关联 按住减号即可
- RTSP客户端接收存储数据(live555库中的openRTSP实例)
一.openRTSP编译运行 a)windows下编译运行 还是以mediaServer作为服务端,openRTSP作为客户端 b)Linux下编译运行 转自http://kuafu80.blog.1 ...
- Ubuntu14.04安装QT5.5
1.进入qt目录下,修改qt安装文件属性 2:执行./qt-opensource-linux-xXXX; 3.启动Qt Creater:进入Qt5./Tools/QtCreater/bin/,可以鼠标 ...