web-dev-qa-db-ja.com

Hadoopの互換性のないnamespaceIDの問題が発生するのはなぜですか?

これはかなりよく文書化されたエラーであり、修正は簡単ですが、HadoopデータノードのNamespaceIDが簡単に台無しになる理由や、Hadoopがデータノードの起動時にNamespaceIDを割り当てる方法を知っている人はいますか?

エラーは次のとおりです。

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)

これは、単一ノードインスタンスでも発生するようです。

16
Jieren

Namenodeは、HDFSをフォーマットするたびに新しいnamespaceIDを生成します。これはおそらく現在のバージョンと以前のバージョンを区別するためだと思います。何かが適切でない場合は、いつでも以前のバージョンにロールバックできます。これは、namespaceIDがフォーマットされたすべてのインスタンスに対して一意でない場合は不可能な場合があります。

NamespaceIDは、namenodeとdatanodesも接続します。データノードは、namespaceIDを介してnamenodeにバインドされます

17
Harsha Hulageri

この問題はよく説明されており、次のように役立ちます ファインガイド

8
avner

私もこれを取得していたので、構成をhdfs-site.xmlではなくcore-site.xmlに入れてみました。

今はそのエラーなしで停止して開始するようです。

[編集、2010-08-13]

実際、これはまだ発生しており、byフォーマットが原因です。

フォーマットを行うときにVERSIONファイルを見ると、namenodeに新しいnamespaceIDが割り当てられていることがわかりますが、データノードには割り当てられていません。

簡単な解決策は、フォーマットする前にデータノードのVERSIONを削除することです。

[TIDE、2010-08-13]

5
user242766

HDFSをフォーマットしたときに、このエラーも発生しました。データノードが開始されないことを除けば、ジョブトラッカーも開始されません。データノードの場合、namespaceidを手動で変更しました。ただし、ジョブトラッカーの場合は、/ mapred/system(hdfsユーザーとして)ディレクトリを作成し、その所有者をmapredに変更する必要があります。ジョブトラッカーは、フォーマットの後に実行を開始する必要があります。

0

「/ home/hadoop/data/dnの互換性のないnamespaceID」というエラーが発生しました。

クラスター内に4つのデータノードがあります。start-dfs.shを開始した後、1つのデータノードのみが起動しました。SO解決策は、nnとjtでサービスを停止し、dn構成dromhdfsを削除することでした。 -すべてのデータノードのサイトで、dnファイル(/ home/hadoop/data/dn)を削除し、namenodeをフォーマットします。次に、すべてのデータノードのhdfs-siteにデータノードのプロパティを再度追加し、namenodeをもう一度フォーマットします。今すぐすべてのデータノードでサービスを開始してみてください。きっと上がるだろう

0
naveen