Hadoop分布式环境部署之namenode或datanode启动失败

2019-03-28 13:18|来源: 网络

Hadoop分布式环境部署之namenode或datanode启动失败

bug信息:

namenode

org.apache.hadoop.ipc.Server: Error register getProtocolVersionjava.lang.IllegalArgumentException: Duplicate metricsName:getProtocolVersionat org.apache.hadoop.metrics.util.MetricsRegistry.add(MetricsRegistry.java:53)at org.apache.hadoop.metrics.util.MetricsTimeVaryingRate.<init>(MetricsTimeVaryingRate.java:89)at org.apache.hadoop.metrics.util.MetricsTimeVaryingRate.<init>(MetricsTimeVaryingRate.java:99)at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:396)at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)2010-01-14 09:32:13,093 INFO org.apache.hadoop.ipc.Server: Error register versionRequestjava.lang.IllegalArgumentException: Duplicate metricsName:versionRequestat org.apache.hadoop.metrics.util.MetricsRegistry.add(MetricsRegistry.java:53)at org.apache.hadoop.metrics.util.MetricsTimeVaryingRate.<init>(MetricsTimeVaryingRate.java:89)at org.apache.hadoop.metrics.util.MetricsTimeVaryingRate.<init>(MetricsTimeVaryingRate.java:99)at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:396)at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)

datanode:

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: IncompatiblenamespaceIDs in /var/lib/hadoop-0.20/cache/hdfs/dfs/data: namenode namespaceID =240023870; datanode namespaceID = 1462715681 .

用三台Ubuntu操作系统的机器搭建了一个hadoop的分布式集群。启动服务后失败。

问题:Namenode上namespaceID与datanode上namespaceID不一致。namenode上的问题可能是datanode bug导致的。

原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。

解决:参考该网址  http://www.linuxidc.com/Linux/2012-12/75664.htm  给出两种解决方法,我们使用的是第一种解决方法:即:

  (1)停掉集群服务

  (2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/ (注:我们当时在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录保存一个副本).

  (3)格式化namenode.

  (4)重新启动集群。

  问题解决。

这种方法带来的一个副作用即是,hdfs上的所有数据丢失。如果hdfs上存放有重要数据的时候,不建议采用该方法,可以尝试提供的网址中的第二种方法。

参考: http://www.linuxidc.com/Linux/2012-12/75664.htm

相关问答

更多