昨天还好好的集群,今天早上来看又挂掉了,还好是家里的测试服务器集群。。。

首先,查看了Namenode的状态,发现两台Namenode只剩下一台了,赶紧到挂了的那台去查看了logs下的日志:

-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited  ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.server.blockmanagement.CacheReplicationMonitor: Rescanning after milliseconds
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. Succeeded so far: [10.80.248.17:]
-- ::, FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: flush failed for required journal (JournalAndStream(mgr=QJM to [10.80.248.17:, 10.80.248.18:, 10.80.248.19:], stream=QuorumOutputStream starting at txid ))
java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond.
at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:)
at org.apache.hadoop.hdfs.qjournal.client.QuorumOutputStream.flushAndSync(QuorumOutputStream.java:)
at org.apache.hadoop.hdfs.server.namenode.EditLogOutputStream.flush(EditLogOutputStream.java:)
at org.apache.hadoop.hdfs.server.namenode.EditLogOutputStream.flush(EditLogOutputStream.java:)
at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalSetOutputStream$.apply(JournalSet.java:)
at org.apache.hadoop.hdfs.server.namenode.JournalSet.mapJournalsAndReportErrors(JournalSet.java:)
at org.apache.hadoop.hdfs.server.namenode.JournalSet.access$(JournalSet.java:)
at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalSetOutputStream.flush(JournalSet.java:)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.logSync(FSEditLog.java:)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.endCurrentLogSegment(FSEditLog.java:)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.rollEditLog(FSEditLog.java:)
at org.apache.hadoop.hdfs.server.namenode.FSImage.rollEditLog(FSImage.java:)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.rollEditLog(FSNamesystem.java:)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.rollEditLog(NameNodeRpcServer.java:)
at org.apache.hadoop.hdfs.protocolPB.NamenodeProtocolServerSideTranslatorPB.rollEditLog(NamenodeProtocolServerSideTranslatorPB.java:)
at org.apache.hadoop.hdfs.protocol.proto.NamenodeProtocolProtos$NamenodeProtocolService$.callBlockingMethod(NamenodeProtocolProtos.java:)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:)
at org.apache.hadoop.ipc.Server$Handler$.run(Server.java:)
at org.apache.hadoop.ipc.Server$Handler$.run(Server.java:)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:)
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Aborting QuorumOutputStream starting at txid
-- ::, INFO org.apache.hadoop.util.ExitUtil: Exiting with status
-- ::, INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ut07/10.80.248.17
************************************************************/

以上是hadoop-hadooptest-namenode-ut07.log在Namenode退出时候的关键日志,可以从中发现,Namenode在写Journalnode发生了超时,默认的超时时间为20秒,而在超时发生后,Namenode会触发ExitUtil类的terminate 方法,导致进程的System.exit()

至于为什么好好的集群,会发生写入超时的问题呢,这个问题现在还不太确定,有人说是因为执行了较大文件的HDFS操作,导致Namenode的FULL GC时间较长,所以导致写Journalnode超时。但是我昨天到今天基本上没有去动HDFS,这个根本原因还得再深挖一下。。。

无论如何,先把集群恢复吧,还要用呢。

其实在实际的生产环境中,也很容易发生类似的这种超时情况,所以我们需要把默认的20s超时改成更大的值,比如60s。

我们可以在hadoop/etc/hadoop下的hdfs-site.xml中,加入一组配置:

<property>
<name>dfs.qjournal.write-txns.timeout.ms</name>
<value>60000</value>
</property>

这也是我从别人博客中看到的配置方法,神奇的是,我在hadoop的官网中的关于hdfs-site.xml介绍中,居然找不到关于这个配置的说明。。。

http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

最后记得重启整个集群,这样配置才能生效。

友情提示:使用了Flume的同学,记得也要重启Flume集群哦~

Namenode写Journalnode超时,导致Namenode挂掉的问题的更多相关文章

  1. Hadoop namenode连接journalnode限制导致集群启动失败

    错误1:刚搭建的新集群,启动journalnode以后,格式化namenode节点,出现如下错误 注意其中划红线的地方. 出现这个错误的原因是journalnode节点还没有准备好,而namenode ...

  2. HDFS namenode 写edit log原理以及源码分析

    这篇分析一下namenode 写edit log的过程. 关于namenode日志,集群做了如下配置 <property> <name>dfs.nameservices< ...

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

    场景回顾: 测试集群节点分配:35,36是namenode且开启HA,37,38,39即作为datanode,又作为journalnode. 某时间 38节点磁盘爆满,集群中hdfs及依赖的服务全部宕 ...

  4. ubuntu 重新启动 导致 Namenode无法启动

    hadoop 单节点安装成功了之后,心情那是叫一个激动.不过后来不知道为什么系统相当的慢.于是就把系统重启了.但是不妙的是namenode各种无法启动. 原来的配置: core-site.xml &l ...

  5. hadoop 2.5 hdfs namenode –format 出错Usage: java NameNode [-backup] |

    在 cd  /home/hadoop/hadoop-2.5.2/bin 下 执行的./hdfs namenode -format 报错[hadoop@node1 bin]$ ./hdfs nameno ...

  6. ch341a编程器写操作超时失败

    当点击自动编写‘提示写操作超时失败’要怎么样才能解决,下面我给大家分享一下!   方法/步骤     首先我们点击操作   选择操作选项   看看箭头所指的几个地方是不是都没打上勾   我们把这几个地 ...

  7. HA集群中namenode连接不上journalnode,导致namenode启动不了

    查看日志发现一下的错误: 2018-10-08 15:29:26,373 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: ...

  8. mount: /dev/sdb1 already mounted or /mnt/hdb busy 导致NameNode无法启动

    最近,公司由于断电导致的服务器关机,等到来电了,重启集群发现Namenode无法启动,查看原因是由于无法加在faimage文件,在查看一下Namenode的磁盘挂在情况(df -h命令查看),发现磁盘 ...

  9. [原创]Hadoop默认设置导致NameNode启动失败一例

    看到市面上很多书在讲解Hadoop的时候都轻描淡写的提到了HDFS的设置问题.大多采取的是默认设置,最多也就是设置一些副本数量之类. 笔者在工作中遇到了这样一种情况:每次重启系统之后,NameNode ...

随机推荐

  1. Java 和 IOS 区别

    Java接口与Objective-C正式协议类似,因为都需要实现     一组方法.Java具有抽象类,但Objective-C没有.Java具有类变量,但Objective-C中,可以使用文件范围内 ...

  2. Hexo+NextT基本设置【3】

    该系列博客列表请访问:http://www.cnblogs.com/penglei-it/category/934299.html 摘要      或许在你看到我这篇我文章之前,你已经成功的通过Git ...

  3. 理解LinkedHashMap

    转自http://uule.iteye.com/blog/1522291   1. LinkedHashMap概述: LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输 ...

  4. The Linux Mint 18.1:Eclipse Run The C++ And Python ConfigorationWhen You achieve above step,you can run the c++ and python! (Next OTL ,PYOTL is Project That Write By Ruimin Shen(ability man) )

    # Copyright (c) 2016, 付刘伟 (Liuwei Fu)# All rights reserved.# 转载请注明出处 1.Install The Eclipse,g++ Use T ...

  5. 【CSS学习笔记】背景图片

    直接看代码: background: blue; /*页面背景为蓝色,很简单的代码*/background-image:url(small.jpg); /*页面背景是名字叫small.jpg的图片*/ ...

  6. Angularjs通过$http与服务器通信

    angular是一个前端框架,实现了可交互式的页面,但是对于一个web应用,页面上进行展示的数据从哪里来,肯定需要服务端进行支持,那么angular是如何同服务端进行交互的呢? $http angul ...

  7. 《DSP using MATLAB》示例 Example 6.5

    代码: b = [1, 0, 0, 0, 16+1/16, 0, 0, 0, 1]; broots = roots(b) B1 = real(poly([broots(1), broots(2), b ...

  8. Base64加密与解密

    import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder; // 将 str进行 BASE64 编码 public static Stri ...

  9. C++类继承中,基类/当前对象属性/当前对象的构造顺序

    [1]中提到,规范的派生类构造函数三个要点: 首先创建基类对象 应通过成员初始化列表,创建基类对象 应该初始化本派生类新增的成员变量 那在构造派生类实例的过程中,其基类(以及多继承的时候多个基类)/当 ...

  10. jQuery学习笔记(一)--jQuery对象与DOM对象相互转换

    通过标准的JavaScript操作DOM与jQuyer操作DOM的对比,我们不难发现: 通过jQuery方法包装后的对象,是一个类数组对象.它与DOM对象完全不同,唯一相似的是它们都能操作DOM. 通 ...