Namenode写Journalnode超时,导致Namenode挂掉的问题
昨天还好好的集群,今天早上来看又挂掉了,还好是家里的测试服务器集群。。。
首先,查看了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挂掉的问题的更多相关文章
- Hadoop namenode连接journalnode限制导致集群启动失败
错误1:刚搭建的新集群,启动journalnode以后,格式化namenode节点,出现如下错误 注意其中划红线的地方. 出现这个错误的原因是journalnode节点还没有准备好,而namenode ...
- HDFS namenode 写edit log原理以及源码分析
这篇分析一下namenode 写edit log的过程. 关于namenode日志,集群做了如下配置 <property> <name>dfs.nameservices< ...
- 因磁盘爆满而导致NameNode HA无法启动
场景回顾: 测试集群节点分配:35,36是namenode且开启HA,37,38,39即作为datanode,又作为journalnode. 某时间 38节点磁盘爆满,集群中hdfs及依赖的服务全部宕 ...
- ubuntu 重新启动 导致 Namenode无法启动
hadoop 单节点安装成功了之后,心情那是叫一个激动.不过后来不知道为什么系统相当的慢.于是就把系统重启了.但是不妙的是namenode各种无法启动. 原来的配置: core-site.xml &l ...
- 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 ...
- ch341a编程器写操作超时失败
当点击自动编写‘提示写操作超时失败’要怎么样才能解决,下面我给大家分享一下! 方法/步骤 首先我们点击操作 选择操作选项 看看箭头所指的几个地方是不是都没打上勾 我们把这几个地 ...
- HA集群中namenode连接不上journalnode,导致namenode启动不了
查看日志发现一下的错误: 2018-10-08 15:29:26,373 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: ...
- mount: /dev/sdb1 already mounted or /mnt/hdb busy 导致NameNode无法启动
最近,公司由于断电导致的服务器关机,等到来电了,重启集群发现Namenode无法启动,查看原因是由于无法加在faimage文件,在查看一下Namenode的磁盘挂在情况(df -h命令查看),发现磁盘 ...
- [原创]Hadoop默认设置导致NameNode启动失败一例
看到市面上很多书在讲解Hadoop的时候都轻描淡写的提到了HDFS的设置问题.大多采取的是默认设置,最多也就是设置一些副本数量之类. 笔者在工作中遇到了这样一种情况:每次重启系统之后,NameNode ...
随机推荐
- linux下搭建svn本地服务器
在linux下搭建svn本地服务器可以很好的管理自己的代码,具体过程如下: # mkdir svn_local # cd svn_local # svnadmin create led_diplay ...
- 使用kettle工具将文本文件的内容插入Linux虚拟机下的mysql表中
一. 解压kettle包 1.把包拷到Linux系统下 还有mysql的驱动包 2.解压zip后缀的包 输入命令:unzip /software/pdi-ce-7.0.0.0-25.zip ...
- YC(Y Combinator)斯坦福大学《如何创业》课程要点记录(粗糙)
20节课程,每节都是干货满满,时常听说理论无用,但是好的理论,绝对能帮助你少走一些弯路. YC简介: Y Combinator成立于2005年,是美国著名创业孵化器,Y Combinator扶持初创企 ...
- 游戏排行榜-Python实现
背景介绍 排行榜通常是游戏中为了激发玩家的一种策略,那么对于开发人员来说如何完成一个排行榜的设计呢?如果这个排行榜是动态的如何才能高效的对比出结果呢?如果排行榜实时性较高如何给用户展示出用户是进步了还 ...
- js操作
1.1.直接传入Javascript代码,定位元素 js可以点击页面上不显示暂时隐藏(比如下拉列表),但是html文件中存在的属性 WebDriver driver = new FirefoxDriv ...
- ssi-uploader上传图片插件,点击选择文件按钮自动提交表单解决办法
先介绍一下这款插件,然后再谈使用中可能遇到的问题 ssi-uploader是一个JQuery的图片上传插件,界面比较美观 github地址:https://github.com/ssbeefeater ...
- [ios2] 开发技巧【转】
1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...
- docker--------------实践(转载)
在私有云的容器化过程中,我们并不是白手起家开始的.而是接入了公司已经运行了多年的多个系统,包括自动编译打包,自动部署,日志监控,服务治理等等系统.在容器化之前,基础设施主要以物理机和虚拟机为主.因此, ...
- RFC Transactional RFC (tRFC) queue RFC(qRFC) 概念
Transactional RFC When using transactional RFC (tRFC), the called function module is executed exactl ...
- springmvc中返回页面,只在iframe中跳转,而不是整个页面,解决方法。
问题描述:在我写的主页面中用到了iframe,其中在iframe中有一个button点击提交,然后在Controller中返回页面的时候,是在iframe中打开的,而不是整个页面. 最开始我想用aja ...