Hadoop 2.2.0を疑似分散モードでインストールしようとしています。 datanodeサービスを開始しようとしているときに、次のエラーが表示されていますが、これを解決する方法を教えてください。
**2**014-03-11 08:48:15,916 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (storage id unknown) service to localhost/127.0.0.1:9000 starting to offer service
2014-03-11 08:48:15,922 INFO org.Apache.hadoop.ipc.Server: IPC Server Responder: starting
2014-03-11 08:48:15,922 INFO org.Apache.hadoop.ipc.Server: IPC Server listener on 50020: starting
2014-03-11 08:48:16,406 INFO org.Apache.hadoop.hdfs.server.common.Storage: Lock on /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode/in_use.lock acquired by nodename 3627@prassanna-Studio-1558
2014-03-11 08:48:16,426 FATAL org.Apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-611836968-127.0.1.1-1394507838610 (storage id DS-1960076343-127.0.1.1-50010-1394127604582) service to localhost/127.0.0.1:9000
Java.io.IOException: Incompatible clusterIDs in /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode: namenode clusterID = CID-fb61aa70-4b15-470e-a1d0-12653e357a10; datanode clusterID = CID-8bf63244-0510-4db6-a949-8f74b50f2be9
at**** org.Apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.Java:391)
at org.Apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.Java:191)
at org.Apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.Java:219)
at org.Apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.Java:837)
at org.Apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.Java:808)
at org.Apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.Java:280)
at org.Apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.Java:222)
at org.Apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.Java:664)
at Java.lang.Thread.run(Thread.Java:662)
2014-03-11 08:48:16,427 WARN org.Apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-611836968-127.0.1.1-1394507838610 (storage id DS-1960076343-127.0.1.1-50010-1394127604582) service to localhost/127.0.0.1:9000
2014-03-11 08:48:16,532 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-611836968-127.0.1.1-1394507838610 (storage id DS-1960076343-127.0.1.1-50010-1394127604582)
2014-03-11 08:48:18,532 WARN org.Apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2014-03-11 08:48:18,534 INFO org.Apache.hadoop.util.ExitUtil: Exiting with status 0
2014-03-11 08:48:18,536 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
次の方法を実行できます。
cID-8bf63244-0510-4db6-a949-8f74b50f2be9の例の場合は、クリップボードID datacluster clusterIDにコピーします
そしてHADOOP_HOME/binディレクトリの下で次のコマンドを実行します
./hdfs namenode -format -clusterId CID-8bf63244-0510-4db6-a949-8f74b50f2be9
次に、このコードは、namenodeをdatanodeクラスターIDでフォーマットしました。
次のようにする必要があります。
bin/stop-all.sh
rm -Rf /home/prassanna/usr/local/hadoop/yarn_data/hdfs/*
bin/hadoop namenode -format
このWebサイト で答えを見つけるまで、私は同じ問題を抱えていました。
エラーを下回っているときはいつでも、スレーブマシンでDNを開始しようとしています:
Java.io.IOException: Incompatible clusterIDs in /home/hadoop/dfs/data: namenode clusterID= ****; datanode clusterID = ****
クラスターをセットアップした後、何らかの理由でNNを再フォーマットすることにしたからです。スレーブ上のDNは、依然として古いNNを参照しています。
これを解決するには、ローカルLinux FSのそのマシンのデータフォルダー、つまり/ home/hadoop/dfs/dataを削除して再作成します。
そのマシンでDNのデーモンを再起動すると、data /フォルダーのコンテンツが再作成され、問題が解決します。
簡単な手順に従ってください
この後、他の構成の問題がない場合、クラスターは正常に起動します
DataNodeは、NameNodeと比較して互換性のないClusteridが原因で死にます。この問題を修正するには、ディレクトリ/ tmp/hadoop- [user]/hdfs/dataを削除してhadoopを再起動する必要があります。
rm -r /tmp/hadoop-[user]/hdfs/data
擬似分散環境でも同様の問題が発生しました。最初にクラスターを停止してから、NameNodeのバージョンファイルからクラスターIDをコピーし、DataNodeのバージョンファイルに配置します。その後、クラスターを再起動した後、すべて問題ありません。
データパスは/ usr/local/hadoop/hadoop_store/hdfs/datanodeおよび/ usr/local/hadoop/hadoop_store/hdfs/namenodeにあります。
参考:バージョンファイルは/ usr/local/hadoop/hadoop_store/hdfs/datanode/current /にあります。 NameNodeについても同様です。
ここでは、datanodeとnamenodeのclusterIDが異なるため、datanodeはすぐに停止します。したがって、namenodeのclusterIDをdatanodeのclusterIDでフォーマットする必要があります
例としてCID-8bf63244-0510-4db6-a949-8f74b50f2be9のデータノードclusterIDをコピーし、ホームディレクトリから次のコマンドを実行します。端末でcd
と入力するだけで、ホームディレクトリに移動できます。
ホームディレクトリから次のコマンドを入力します。
hdfs namenode -format -clusterId CID-8bf63244-0510-4db6-a949-8f74b50f2be9
私も同様の問題を抱えていました。すべてのノードからnamenodeおよびdatanodeフォルダーを削除し、再実行します。
$HADOOP_HOME/bin> hdfs namenode -format -force
$HADOOP_HOME/sbin> ./start-dfs.sh
$HADOOP_HOME/sbin> ./start-yarn.sh
コマンドラインからヘルスレポートを確認するには(推奨)
$HADOOP_HOME/bin> hdfs dfsadmin -report
そして、すべてのノードが正しく機能するようになりました。
Core-site.xmlで指定されているnamenodeおよびdatanodeディレクトリを削除します。その後、新しいディレクトリを作成し、dfsとyarnを再起動します。
Hadoop 2.7.7でも同じ問題がありました
Namenodeおよびすべてのdatanodeのnamenode/currentおよびdatanode/currentディレクトリーを削除しました
/tmp/hadoop-ubuntu/*
のファイルを削除しました手順:すべてのノード/マネージャーを停止してから、以下の手順を試みます
rm -rf /tmp/hadoop-ubuntu/*
(すべてのノード)rm -r /usr/local/hadoop/data/hdfs/namenode/current
(namenode:hdfs-site.xml
でパスを確認してください)rm -r /usr/local/hadoop/data/hdfs/datanode/current
(パスのdatanode:check hdfs-site.xml
)hdfs namenode -format
(namenode上)hdfs datanode -format
(namenode上)