web-dev-qa-db-ja.com

実行中のデータノードはありません。この操作で除外されるノードはありません

マルチノードHadoopクラスターをセットアップしました。 NameNodeとセカンダリnamenodeは同じマシンで実行され、クラスターにはDatanodeが1つしかありません。すべてのノードはAmazon EC2マシンで構成されます。

マスターノードの構成ファイルは次のとおりです。

masters
54.68.218.192 (public IP of the master node)

slaves
54.68.169.62 (public IP of the slave node)

core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

データノード上の構成ファイルは次のとおりです。

core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>

mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>54.68.218.192:10002</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

namenodeで実行されるjpsは次を提供します。

5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager

datanodeのjps:

2883 DataNode
3496 Jps
3381 NodeManager

私には正しいようです。

さて、putコマンドを実行しようとすると:

hadoop fs -put count_inputfile /test/input/

次のエラーが表示されます。

put: File /count_inputfile._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.

データノードのログには次のことが記録されています。

hadoop-datanode log
INFO org.Apache.hadoop.ipc.Client: Retrying connect to server:      54.68.218.192/54.68.218.192:10001. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

yarn-nodemanagerログ:

INFO org.Apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

ノードマネージャー(50070)のWeb UIには、0個のライブノードと0個のデッドノードがあり、使用されるdfsは100%

IPV6も無効にしています

いくつかのWebサイトで、/etc/hostsファイル。私もそれらを編集しました、そして、彼らはこのように見えます:

127.0.0.1 localhost
172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal
172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal

まだエラーが発生するのはなぜですか?

22
Learner

2つのことがうまくいきました。

ステップ1:hadoopを停止し、hduserから一時ファイルを消去します

Sudo rm -R /tmp/*

また、削除して再作成する必要がある場合があります/app/hadoop/tmp(ほとんどがhadoopバージョンを2.2.0から2.7.0

Sudo rm -r /app/hadoop/tmp
Sudo mkdir -p /app/hadoop/tmp
Sudo chown hduser:hadoop /app/hadoop/tmp
Sudo chmod 750 /app/hadoop/tmp

ステップ2:namenodeをフォーマットする

hdfs namenode -format

今、私はDataNodeを見ることができます

hduser@prayagupd:~$ jps
19135 NameNode
20497 Jps
19477 DataNode
20447 NodeManager
19902 SecondaryNameNode
20106 ResourceManager
24
prayagupd

ノードの不適切なシャットダウン後に同じ問題が発生しました。また、UIでデータノードがリストされていないことを確認します。

これで、datanodeフォルダーからファイルを削除し、サービスを再起動した後に機能します。

stop-all.sh

rm -rf/usr/local/hadoop_store/hdfs/datanode/*

start-all.sh

9
Tamilkumaran S

@Learner、
NamenodeのWeb UIにデータノードが表示されないという問題がありました。 Hadoop 2.4.1のこれらの手順で解決しました。

これをすべてのノード(マスターとスレーブ)に対して行います

1。すべての一時ファイルを削除します(デフォルトでは/ tmpにあります)-Sudo rm -R /tmp/*
2。 ssh username@Hostを使用してsshを介してすべてのノードに接続し、ssh-copy-id -i ~/.ssh/id_rsa.pub username@Hostを使用してマスターにキーを追加して、マスターへのスレーブの無制限のアクセスを許可してください接続を拒否します)。
3。 hadoop namenode -formatを使用してネームノードをフォーマットし、デーモンを再起動してください。

5
kishorer747

私の状況では、firewalldサービスが実行されていました。それはデフォルト設定でした。また、ノード間の通信を許可しません。私のhadoopクラスターはテストクラスターでした。このため、サービスを停止しました。サーバーが実稼働している場合は、firewalldのhadoopポートを許可する代わりに、

service firewalld stop
chkconfig firewalld off
3
mustafacanturk

私の状況では、MacOSでHomeBrewを使用してインストールされたhdfs-site.xml(Hadoop 3.0.0)内に必要なプロパティがありませんでした。 (file:///はタイプミスではありません。)

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///usr/local/Cellar/hadoop/hdfs/namenode</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///usr/local/Cellar/hadoop/hdfs/datanode</value>
</property>
1
smooth_smoothie

同じエラーが発生しました。 hdfsファイルシステムへのアクセス許可がありません。そこで、ユーザーに許可を与えます。

chmod 777 /usr/local/hadoop_store/hdfs/namenode
chmod 777 /usr/local/hadoop_store/hdfs/datanode

単一ノードクラスターでも同じ問題に直面しています。

この問題を解決するために、次の手順を実行しました。
1。 logsディレクトリの下のdatanodeログをチェックし、namenode clusterIddatanode clusterIdが異なることを発見しました。
2。空のデータノードディレクトリを作成します。
rm -rvf/hadoop/hdfs/datanode/*
3。 stop-all.sh
4。 hdfs namenode -format
5。 start-all.sh
6。 jps
27200 NodeManager
26129 NameNode
26595 SecondaryNameNode
5539 ​​GradleDaemon
2355メイン
2693 GradleDaemon
27389 Jps
26846 ResourceManager
26334 DataNode

これは私には有効です。

0

データノードとネームノードまたはノードマネージャのクラスタIDが一致していないためと思われます。クラスターIDは、namenodeとdatanodesの両方にあるVERSIONファイルで確認できます。

これは、ネームノードをフォーマットしてからクラスターを再起動したときに発生しますが、データノードは以前のclusterIDを使用して接続を試みます。正しく接続するには、正しいIPアドレスと、ノード上の一致するクラスターIDが必要です。

そのため、ネームノードとデータノードを再フォーマットするか、新しく作成されたフォルダーでデータノードとネームノードを構成してください。

これで問題が解決するはずです。

現在のdatanodesフォルダーからファイルを削除すると、古いVERSIONファイルも削除され、namenodeとの再接続中に新しいVERSIONファイルが要求されます。

例の構成内のdatanodeディレクトリは/ hadoop2/datanodeです

$ rm -rvf /hadoop2/datanode/*

そして、サービスを再起動します。ネームノードを再フォーマットする場合は、この手順の前にそれを実行します。ネームノードを再フォーマットするたびに新しいIDが取得され、そのIDはランダムに生成され、データノードの古いIDと一致しません

だから毎回このシーケンスに従う

namenodeをフォーマットしてからdatanodeディレクトリーの内容を削除する場合OR新しく作成されたディレクトリーでdatanodeを構成してから、namenodeおよびdatanodesを開始します

0
rajat

/ tmpフォルダーをクリアしようとしましたか?.

クリーンアップする前に、データノードが起動しませんでした

86528 SecondaryNameNode
87719 Jps
86198 NameNode
78968 RunJar
79515 RunJar
63964 RunNiFi
63981 NiFi

クリーンアップ後

Sudo rm -rf /tmp/*

それは私のために働いた

89200 Jps
88859 DataNode
0
MagnumCodus

マスターマシンとスレーブマシンの両方で、core-site.xmlのプロパティ{fs.default.name}の値は、マスターマシンを指している必要があります。したがって、次のようになります。

<property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
</property>

masterは、マスターノードを指す/ etc/hostsファイル内のホスト名です。

0
Prabhat Swami

@mustafacanturkソリューション、ファイアウォールを無効にするとうまくいきました。データノードは、jpsを実行しているときに表示されたが、ファイルをアップロードしようとすると「0 nodes running」というメッセージが表示されたために開始されたと考えました。実際、( http:// nn1:5007 )へのWebインターフェースもファイアウォールのために機能していませんでした。 hadoopのインストール時にファイアウォールを無効にしましたが、何らかの理由で起動していました。一時フォルダー(hadoop.tmp.dir)またはdfs.data.dirおよびdfs.namenode.name.dirフォルダーをクリーニングまたは再作成し、ネームサーバーを再構築することが解決策であることがありました。