5

次のチュートリアルhttp://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#formatting-theを使用して、ubuntu 12.04 LTS で Sudo ノード Hadoop 環境をセットアップして構成しました 。 -hdfs-filesystem-via-the-namenode

hadoop/bin $ start-all.sh と入力した後、すべてがうまくいき、Jps を確認した後、NameNode、JobTracker、TaskTracker、SecondaryNode が開始されましたが、DataNode は開始されませんでした ...

この問題を解決する方法を知っている人がいたら教えてください..

4

1 に答える 1

3

やぁ解決した…

java.io.IOException: 互換性のない名前空間 ID

エラー java.io.IOException: Incompatible namespaceIDs が DataNode (logs/hadoop-hduser-datanode-.log) のログに表示される場合、問題 HDFS-107 (以前は HADOOP-1212 として知られていた) の影響を受けている可能性があります。 .

完全なエラーは、私のマシンでは次のように見えました: ... ERROR org.apache.hadoop.dfs.DataNode: java.io.IOException: Incompatible namespaceIDs in /app/hadoop/tmp/dfs/data: namenode namespaceID = 308967713; datanode namespaceID = 113030094 org.apache.hadoop.dfs.DataStorage.doTransition(DataStorage.java:281) org.apache.hadoop.dfs.DataStorage.recoverTransitionRead(DataStorage.java:121) org.apache.hadoop.dfs .DataNode.startDataNode(DataNode.java:230) org.apache.hadoop.dfs.DataNode.(DataNode.java:199) org.apache.hadoop.dfs.DataNode.makeInstance(DataNode.java:1202) org .apache.hadoop.dfs.DataNode.run(DataNode.java:1146) で org.apache.hadoop.dfs.DataNode.createDataNode(DataNode.java:1167) で org.apache.hadoop.dfs.DataNode.main(DataNode) .java:1326) その瞬間、

回避策 1: ゼロから始める 次の手順でこのエラーが解決されることは証明できますが、副作用はあなたを満足させるものではありません (私もそうです)。私が見つけた大まかな回避策は次のとおりです。

クラスターを停止します 問題のある DataNode のデータ ディレクトリを削除します。ディレクトリは conf/hdfs-site.xml の dfs.data.dir で指定されます。このチュートリアルに従った場合、関連するディレクトリは /app/hadoop/tmp/dfs/data です NameNode を再フォーマットします (注: このプロセス中にすべての HDFS データが失われます!) クラスターを再起動します すべての HDFS データを削除し、ゼロから開始すると良いアイデアとは思えない (初期セットアップ/テスト中は問題ないかもしれません) 場合は、2 番目の方法を試してみてください。

回避策 2: 問題のある DataNode の名前空間 ID を更新する 次の提案をしてくれた Jared Stehler に感謝します。まだ自分でテストしていませんが、お気軽に試してフィードバックをお送りください。この回避策は、問題のある DataNode で 1 つのファイルを編集するだけでよいため、「侵襲性が最小限」です。

DataNode を停止します /current/VERSION の namespaceID の値を編集して、現在の NameNode の値と一致させます DataNode を再起動します 私のチュートリアルの指示に従った場合、関連ファイルのフル パスは次のとおりです。

NameNode: /app/hadoop/tmp/dfs/name/current/VERSION DataNode: /app/hadoop/tmp/dfs/data/current/VERSION (背景: dfs.data.dir はデフォルトで ${hadoop.tmp に設定されています) .dir}/dfs/data に設定し、このチュートリアルでは hadoop.tmp.dir を /app/hadoop/tmp に設定します)。

問題の解決策は、次のサイトに明確に記載されています。

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids

于 2012-10-25T06:47:07.817 に答える