为什么Hadoop不兼容的名称空间ID问题发生? [英] Why does the Hadoop incompatible namespaceIDs issue happen?

查看:104
本文介绍了为什么Hadoop不兼容的名称空间ID问题发生?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个相当有据可查的错误,修复很简单,但是有谁知道为什么Hadoop datanode命名空间ID可能会很容易搞砸,或者Hadoop在启动datanode时如何分配命名空间ID?



这是错误:

  2010-08-06 12:12:06,900错误组织。 apache.hadoop.hdfs.server.datanode.DataNode:java.io.IOException:/ Users / jchen / Data / Hadoop / dfs / data中的不兼容命名空间ID:namenode namespaceID = 773619367; datanode namespaceID = 2049079249 
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:233)
at org.apache.hadoop.hdfs.server.datanode.DataStorage。 recoverTransitionRead(DataStorage.java:148)
位于org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:298)
位于org.apache.hadoop.hdfs.server。 datanode.DataNode。< init>(DataNode.java:216)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
at org.apache .hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
在org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)



<这似乎甚至发生在单个节点实例上。

解决方案

Namenode每次格式化HDFS时都会生成新的namespaceID。我认为这可能是为了区分当前版本和以前的版本。如果某些内容不正确,则可以总是回滚到以前的版本,如果namespaceID对于每个格式化的实例都不唯一,那么这可能是不可能的。

NamespaceID还连接namenode和datanodes。 Datanodes通过namespaceID绑定自己到namenode


This is a fairly well-documented error and the fix is easy, but does anyone know why Hadoop datanode NamespaceIDs can get screwed up so easily or how Hadoop assigns the NamespaceIDs when it starts up the datanodes?

Here's the error:

2010-08-06 12:12:06,900 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /Users/jchen/Data/Hadoop/dfs/data: namenode namespaceID = 773619367; datanode namespaceID = 2049079249
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:233)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:148)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:298)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)

This seems to even happen for single node instances.

解决方案

Namenode generates new namespaceID every time you format HDFS. I think this is possibly to differentiate current version and previous version. You can always rollback to previous version if something is not proper which may not be possible if namespaceID is not unique for every formatted instance.

NamespaceID also connects namenode and datanodes. Datanodes bind themselves to namenode through namespaceID

这篇关于为什么Hadoop不兼容的名称空间ID问题发生?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆