namenode无法启动,解决

  • Post author:
  • Post category:其他


hadoop集群关闭后,重新开启

Namenode无法启动。

现象:

执行start-all.sh后,

在master机器是哪个,jps里虽然显示有NameNode进程,

但是web查看hdfs无法进行,也无法执行hadoop fs相关命令。

查看logs/hadoop-hadoop-namenode-xxx.log

发现在启动过程的读edits文件花了3000+s,

读完这个文件之后,接下来的环节就会报出错误信息如下:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host = baby6/10.1.1.26

STARTUP_MSG: args = []

STARTUP_MSG: version = 0.20.2+737

STARTUP_MSG: build = git://ubuntu64-build01.sf.cloudera.com/ on branch -r 98c55c28258aa6f42250569bd7fa431ac657bdbd; compiled by ‘root’ on Tue Dec 14 11:50:19 PST 2010

************************************************************/

2011-10-13 11:58:10,053 INFO org.apache.hadoop.metrics.jvm.JvmMetrics: Initializing JVM Metrics with processName=NameNode, sessionId=null

2011-10-13 11:58:10,058 INFO org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics: Initializing NameNodeMeterics using context object:org.apache.hadoop.metrics.spi.NullContext

2011-10-13 11:58:10,117 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: fsOwner=hadoop

2011-10-13 11:58:10,117 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: supergroup=supergroup

2011-10-13 11:58:10,117 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isPermissionEnabled=true

2011-10-13 11:58:10,126 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

2011-10-13 11:58:11,048 INFO org.apache.hadoop.hdfs.server.namenode.metrics.FSNamesystemMetrics: Initializing FSNamesystemMetrics using context object:org.apache.hadoop.metrics.spi.NullContext

2011-10-13 11:58:11,050 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemStatusMBean

2011-10-13 11:58:11,100 INFO org.apache.hadoop.hdfs.server.common.Storage: Number of files = 2145244

2011-10-13 11:59:50,339 INFO org.apache.hadoop.hdfs.server.common.Storage: Number of files under construction = 14

2011-10-13 11:59:50,344 INFO org.apache.hadoop.hdfs.server.common.Storage: Image file of size 313452606 loaded in 99 seconds.

2011-10-13 13:04:11,893 INFO org.apache.hadoop.hdfs.server.common.Storage: Edits file /home/hadoop/hdfs/NameNode/current/edits of size 71738186 edits # 430017 loaded in 3861 seconds.

2011-10-13 13:19:42,254 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.OutOfMemoryError: GC overhead limit exceeded

at java.util.regex.Pattern.compile(Pattern.java:1451)

at java.util.regex.Pattern.<init>(Pattern.java:1133)

at java.util.regex.Pattern.compile(Pattern.java:823)

at java.lang.String.split(String.java:2292)

at java.lang.String.split(String.java:2334)

主要是因为读edits.new文件时,内存不够。

解决:

删了NameNode/current/edits.new。

这样操作会丢失所有在edits.new里面记录的对hdfs的操作。

(网上有的说可以删除edites文件的末尾不完整的记录。)

之后重新启动hadoop,虽然可以起来,但是依然挂了部分机器。

查看日至,依旧是报错内存不够。

然后修改bin/hadoop脚本

将:JAVA_HEAP_MAX=-Xmx1000m

改为:JAVA_HEAP_MAX=-Xmx2046m

然后重启hadoop,ok。

之后,用hadoop fsck检测损坏的文件,

该部分具体方法见:http://blog.csdn.net/liangliyin/article/details/5872172

这样基本上差不多了。



版权声明:本文为mrking0105原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。