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

首先,查看了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. Ubuntu下OpenVPN客户端配置教程

    一般来说,提供Web服务的Linux服务器是很少需要连接OpenVPN的,但是个人Linux计算机在很多时候就需要连接OpenVPN了.比如以Linux为开发环境,需要连接公司的OpenVPN等等. ...

  2. In-Memory:内存优化数据的持久化和还原

    数据持久化是还原的前提,没有数据的持久化,就无法还原内存优化表的数据,SQL Server In-Memory OLTP的内存数据能够持久化存储,这意味着内存数据能够在SQL Server实例重启之后 ...

  3. Linux下安装zookeeper集群

    首先,准备三台Linux虚拟机 三台机器 centos01 :192.168.1.168(lxs001)   centos03 :192.168.1.178(lxs003)   centos03 :1 ...

  4. Js-Html 前端系列--Ajax

    最近在做Web项目,用到很多Ajax,也遇到很多问题.下面与大家分享. Ajax传参 Ajax同步与异步 Ajax与谷歌浏览器 Ajax传参 我们一般传参有两种形式: $.ajax({ ... dat ...

  5. 集中式(CVS、SVN)VS分布式(Git)

    集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.中央服务器就好比是一个图 ...

  6. 解决 maven项目问题 An error occurred while filtering resources

    解决方法: Maven -> Update Project.

  7. 添加JSTL 1.2 依赖库

    添加JSTL 1.2 依赖库 JSTL 是一项很有历史的技术,而且版本自Java 5以来长期停留在1.2.但在做简单演示的页面时jstl依然有用,当前我们依然能看到这项技术(在博客.文档的demo里很 ...

  8. Android 简单的图片缩放方法

    很简单的一个图片缩放方法,注意要比例设置正确否则可能会内存溢出 相关问题 java.lang.IllegalArgumentException: bitmap size exceeds 32bits ...

  9. python向服务器发送邮件事例

    import osimport sysimport re __author__ = 'xiaoming' import requestststr = '<div>\n<ul>\ ...

  10. 编译C语言单元测试框架CUnit库的方法

    引用: http://blog.csdn.net/yygydjkthh/article/details/46357421 个人备忘使用 /******************************* ...