私はHadoopを疑似分散モードで使用していましたが、すべて正常に機能していました。しかし、何らかの理由でコンピューターを再起動する必要がありました。そして今、NamenodeとDatanodeを起動しようとすると、実行中のDatanodeしか見つかりません。この問題の考えられる理由を誰か教えてもらえますか?それとも私は何か間違ったことをしていますか?
両方試してみましたbin/start-all.sh
およびbin/start-dfs.sh
。
Namenodeが起動しないという問題に直面していました。私は次を使用して解決策を見つけました:
rm -Rf <tmp dir>
(/ usr/local/hadoop/tmpでした)bin/hadoop namenode -format
bin/start-all.sh
チェックポイントを使用してロールバックを検討することもできます(有効にした場合)。
hadoop.tmp.dir
は、core-site.xmlの デフォルト to /tmp/hadoop-${user.name}
これは、再起動のたびにクリーニングされます。これを、再起動時にクリーンアップされない他のディレクトリに変更します。
[〜#〜] steps [〜#〜]に従って、Hadoop 2.2.0で動作しました。
ステップ1 hadoopを停止する
hduser@prayagupd$ /usr/local/hadoop-2.2.0/sbin/stop-dfs.sh
ステップ2 tmpフォルダーを削除する
hduser@prayagupd$ Sudo rm -rf /app/hadoop/tmp/
ステップ create/app/hadoop/tmp /
hduser@prayagupd$ Sudo mkdir -p /app/hadoop/tmp
hduser@prayagupd$ Sudo chown hduser:hadoop /app/hadoop/tmp
hduser@prayagupd$ Sudo chmod 750 /app/hadoop/tmp
ステップ4フォーマットnamenode
hduser@prayagupd$ hdfs namenode -format
ステップ5 dfを開始
hduser@prayagupd$ /usr/local/hadoop-2.2.0/sbin/start-dfs.sh
ステップ6 jpsをチェック
hduser@prayagupd$ $ jps
11342 Jps
10804 DataNode
11110 SecondaryNameNode
10558 NameNode
Conf/hdfs-site.xmlには、次のようなプロパティが必要です。
<property>
<name>dfs.name.dir</name>
<value>/home/user/hadoop/name/data</value>
</property>
プロパティ「dfs.name.dir」を使用すると、HadoopがNameNodeメタデータを書き込む場所を制御できます。また、/ tmpではなく別のディレクトリを指定すると、再起動時にNameNodeデータが削除されないようになります。
新しいターミナルを開き、次を使用してネームノードを起動します hadoop-install/bin/hadoop namenodeへのパス
チェックを使用して jps そしてnamenodeが実行されている必要があります
ここでほとんどの回答が、すべてのデータを削除して再フォーマットし、Hadoopを再起動する必要があると仮定しているのはなぜですか? namenodeが進行していないが、多くの時間がかかっていることをどのように知ることができますかHDFSに大量のデータがある場合、これを行います。何かがハングまたはスタックしていると想定する前に、ログの進行状況を確認してください。
$ [kadmin@hadoop-node-0 logs]$ tail hadoop-kadmin-namenode-hadoop-node-0.log
...
016-05-13 18:16:44,405 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 117/141 transactions completed. (83%)
2016-05-13 18:16:56,968 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 121/141 transactions completed. (86%)
2016-05-13 18:17:06,122 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 122/141 transactions completed. (87%)
2016-05-13 18:17:38,321 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 123/141 transactions completed. (87%)
2016-05-13 18:17:56,562 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 124/141 transactions completed. (88%)
2016-05-13 18:17:57,690 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 127/141 transactions completed. (90%)
これは、特定のシステムで1時間近く待機した後です。私はそれを見るたびにまだ進行中です。システムを立ち上げるときにHadoopに忍耐を持ち、何かがハングしたり進行していないと想定する前にログを確認してください。
Hadoop1.2.1バージョンを使用していて、namenodeを実行できない場合は、core-site.xml
に移動し、dfs.default.name
をfs.default.name
に変更します。
そして、$hadoop namenode -format
を使用してネームノードをフォーマットします。
最後にstart-dfs.sh
を使用してhdfsを実行し、jpsを使用してサービスを確認します。
Core-site.xmlで:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/yourusername/hadoop/tmp/hadoop-${user.name}
</value>
</property>
</configuration>
およびnamenodeの形式:
hdfs namenode -format
hadoop 2.8.1で働いた
I got the solution just share with you that will work who got the errors:
1. First check the /home/hadoop/etc/hadoop path, hdfs-site.xml and
check the path of namenode and datanode
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
2.Check the permission,group and user of namenode and datanode of the particular path(/home/hadoop/hadoopdata/hdfs/datanode), and check if there are any problems in all of them and if there are any mismatch then correct it. ex .chown -R hadoop:hadoop in_use.lock, change user and group
chmod -R 755 <file_name> for change the permission
Core-site.xmlにhadoop.tmp.dirプロパティを追加
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/yourname/hadoop/tmp/hadoop-${user.name}</value>
</property>
</configuration>
hdfs(hadoop 2.7.1)をフォーマットします:
$ hdfs namenode -format
core-default.xml のデフォルト値は/tmp/hadoop-${user.name}であり、再起動後に削除されます。
変更しましたかconf/hdfs-site.xml
dfs.name.dir
?
変更後、namenodeをフォーマットします。
$ bin/hadoop namenode -format
$ bin/hadoop start-all.sh
$hadoop namenode
フォアグラウンドで手動でnamenodeを開始します。
ログから、50070が占有されていることがわかりました。これは、デフォルトでdfs.namenode.http-addressによって使用されていました。 hdfs-site.xmlでdfs.namenode.http-addressを構成した後、すべてがうまくいきました。
ネームノードをフォーマットする代わりに、以下のコマンドを使用してネームノードを再起動できます。それは私のために働いた:
Sudoサービスhadoop-masterの再起動
同じ問題に直面した。
(1).xml
ファイル、特にxmlタグの構成時に入力ミスがないか常に確認してください。
(2)bin dirに移動します。 ./start-all.sh
と入力します
(3)次にjps
と入力して、プロセスが動作しているかどうかを確認します
私にとっては、hdfs-site.xml
のネームノードとデータノードのディレクトリを変更した後、次のように動作しました
-次の手順を実行する前に、すべてのサービスをstop-all.sh
で停止するか、私の場合はstop-dfs.sh
を使用してdfを停止します
$rm -rf /tmp/haddop-$USER
hadoop/bin/hdfs namenode -format
start-dfs.sh
これらの手順を実行した後、新しい構成済みディレクトリを使用して、namenodeとdatanodeが生きていました。
Hadoopの実行時にデフォルト構成を維持した場合、namenodeのポートは50070になります。このポートで実行されているプロセスをすべて見つけて、最初にそれらを強制終了する必要があります。
実行中のすべてのhadoopを停止します:bin/stop-all.sh
ポート50070で実行されているすべてのプロセスを確認します
Sudo netstat -tulpn | grep :50070
#ポート50070で実行されているプロセスをチェックします。ある場合は、出力のRHSに/が表示されます。
Sudo kill -9 <process_id> #kill_the_process
。
Sudo rm -r /app/hadoop/tmp
#一時フォルダを削除
Sudo mkdir /app/hadoop/tmp
#再作成
Sudo chmod 777 –R /app/hadoop/tmp
(この例では777のみが提供されています)
bin/hadoop namenode –format
#format hadoop namenode
bin/start-all.sh
#start-all hadoopサービス
参照 このブログ
システムの再起動後にこの問題に直面した場合、以下の手順で問題なく動作します
回避策として。
1)namenodeのフォーマット:bin/hadoop namenode -format
2)すべてのプロセスを再度開始します:bin/start-all.sh
パーマ修正の場合:-
1)/conf/core-site.xmlに移動し、fs.default.nameをカスタムの名前に変更します。
2)namenodeのフォーマット:bin/hadoop namenode -format
3)すべてのプロセスを再び開始します:bin/start-all.sh
再起動後、私は同じことを見つけました。
hadoop-2.7.3の場合、namenodeをフォーマットするだけでした:
<HadoopRootDir>/bin/hdfs namenode -format
次に、jpsコマンドが表示されます
6097 DataNode
755 RemoteMavenServer
5925 NameNode
6293 SecondaryNameNode
6361 Jps
ネームノードがセーフモードでスタックしている場合は、ネームノードにsshできます。su hdfs
ユーザーおよび次のコマンドを実行してセーフモードをオフにします。
hdfs dfsadmin -fs hdfs://server.com:8020 -safemode leave
リソースマネージャーのデータフォルダーを削除すると、問題はなくなりました。
フォーマットを設定してもこの問題を解決できません。
これを試して、
1)すべてのhadoopプロセスを停止します:stop-all.sh
2)tmpフォルダーを手動で削除します
3)namenodeのフォーマット:hadoop namenode -format
4)すべてのプロセスを開始します:start-all.sh