web-dev-qa-db-ja.com

データノードが正しく起動しない

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: 
35
user2631600

次の方法を実行できます。

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でフォーマットしました。

74
iceberg

次のようにする必要があります。

  • bin/stop-all.sh
  • rm -Rf /home/prassanna/usr/local/hadoop/yarn_data/hdfs/*
  • bin/hadoop namenode -format

このWebサイト で答えを見つけるまで、私は同じ問題を抱えていました。

19
Mouna

エラーを下回っているときはいつでも、スレーブマシンで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 /フォルダーのコンテンツが再作成され、問題が解決します。

15
eliasah

簡単な手順に従ってください

  • Hadoopのデータディレクトリをクリアする
  • 名前ノードを再度フォーマットする
  • クラスターを開始する

この後、他の構成の問題がない場合、クラスターは正常に起動します

10
Vikas Hardia

DataNodeは、NameNodeと比較して互換性のないClusteridが原因で死にます。この問題を修正するには、ディレクトリ/ tmp/hadoop- [user]/hdfs/dataを削除してhadoopを再起動する必要があります。

rm -r /tmp/hadoop-[user]/hdfs/data
7

擬似分散環境でも同様の問題が発生しました。最初にクラスターを停止してから、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についても同様です。

5
S N

ここでは、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
4
Neil

私も同様の問題を抱えていました。すべてのノードから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

そして、すべてのノードが正しく機能するようになりました。

2
Raxit Solanki

Core-site.xmlで指定されているnamenodeおよびdatanodeディレクトリを削除します。その後、新しいディレクトリを作成し、dfsとyarnを再起動します。

2
KayV

Hadoop 2.7.7でも同じ問題がありました

Namenodeおよびすべてのdatanodeのnamenode/currentおよびdatanode/currentディレクトリーを削除しました

  • /tmp/hadoop-ubuntu/*のファイルを削除しました
  • 次に、namenodeとdatanodeをフォーマットします
  • すべてのノードを再起動します。
  • 物事はうまくいく

手順:すべてのノード/マネージャーを停止してから、以下の手順を試みます

  1. rm -rf /tmp/hadoop-ubuntu/*(すべてのノード)
  2. rm -r /usr/local/hadoop/data/hdfs/namenode/current(namenode:hdfs-site.xmlでパスを確認してください)
  3. rm -r /usr/local/hadoop/data/hdfs/datanode/current(パスのdatanode:check hdfs-site.xml
  4. hdfs namenode -format(namenode上)
  5. hdfs datanode -format(namenode上)
  6. Namenodeとdataノードを再起動します
1
LinxFan