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

首先,查看了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. 语音语音合成科大讯飞和Tizen-TTS语音合成引擎

    废话就不多说了,开始...      最近在做一个文本转语音TTS(Text to Speech)的第三方软件封装,应用的是海内语音技术龙头安徽科大讯飞公司提供的离线引擎AiSound5.0,重要用于 ...

  2. web打印小结

    项目中有个需求是将winform客户端的打印,移到网页上由客户自行打印,打印要求是根据一定的格式实现套打. 当时的解决方案是使用PDF打印: 1. 准备好套打格式的底图: 2.打开底图,将动态内容画到 ...

  3. Maven 插件 maven-tomcat7-plugin - 常用命令及配置

    常用命令 tomcat7:deploy 说明:部署 WAR 到 Tomcat tomcat7:help 说明:查看插件帮助信息 tomcat7:run 说明:支行当前项目 配置 <project ...

  4. java转发和重定向

    1,请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变.2,请求转发:服务器行为,request.ge ...

  5. USACO 3.4 Electric Fence

    Electric FenceDon Piele In this problem, `lattice points' in the plane are points with integer coord ...

  6. C# 显式创建线程 or 使用线程池线程--new Thread() or ThreadPool.QueueUserWorkItem()

    在C#多线程编程中,关于是使用自己创建的线程(Thread)还是使用线程池(ThreadPool)线程,一直很困惑,知道看了Jeffrey Richter的相关介绍才明白,记录如下: 当满足一下任何条 ...

  7. android .9图片制作与注意

    首先找到你的开发软件所依赖的SDK,在电脑中找到这个SDK的安装路径,如果有太多SDK分不清楚,Window→Android SDK Manager 点开可以看到你的依赖SDK路径,多余的不说直接发个 ...

  8. November 12th 2016 Week 46th Saturday

    Never love anyone who treats you like you are ordinary. 请爱那些爱你的人. Don't waste your limited energy on ...

  9. SpringMVC同时使用<mvc:resources … />和日期转换Formatter时出现问题的解决方法

    很久没更新博文了,不是没有学习,而是很多东西记在OneNote里面,收获很多啊,因为各种杂事,所以对于博客很久没更新了. 个人觉得:博客比起OneNote或者为知笔记之类的云笔不同在于博客应该记载的是 ...

  10. fedora 使用trove的redstack 安装openstack环境

    以下命令可能是你经常需要用到的: dnf list installed 列出所有dnf安装的包 dnf remove packagename 删除包   先获取trove-integration gi ...