目次
1. 問題の背景
以前Hadoopクラスタを起動したときは問題なかったのですが、今日Hadoopクラスタを起動したところ、スレーブノードのDataNodeが起動しませんでした。
2. 解決策のアイデア
ノードが起動できない場合は、現在のノードのログ ファイルを確認できます。
現在のスレーブ ノードの Hadoop インストール ディレクトリのログ ファイルにアクセスしてログを確認したところ、ログでエラーが報告されていることがわかりました (ログを確認して大量の at が見つかった場合は、問題があることを意味します。 at) の長いリストについては心配する必要はありません。at の前の最初の文を見つけるだけで済みます。その文が問題の鍵です)
ログ ファイルを確認したところ、次のエラーが発生しました。
警告 org.apache.hadoop.hdfs.server.common.Storage: ストレージ ディレクトリ [DISK]file:/home/hadoop/software/hadooptmp/dfs/data
org.apache.hadoop.hdfs.server.common.InconsistentFSStateExceptionの追加に失敗しました: ディレクトリ /home/hadoop/software/hadooptmp/dfs/data は矛盾した状態にあります: 現在のディレクトリが空ではないため、ストレージ ディレクトリをフォーマットできません。
一般的な問題は、データを保存するディレクトリにファイルを追加できず、現在のディレクトリが空ではないと表示されることです。
3. 解決策:
1.クラスターのマスター ノードで、ルート ID を使用して tmp ディレクトリに入ります。
root ユーザーとしてログインした後
cd /tmp
次に、tmp ディレクトリの内容を表示します
hadoop で始まるファイルがいくつか表示されます (ここには 3 つのファイルがあります。あなたのファイルは私のものとは異なるかもしれませんが、問題ありません)。hadoop で始まるファイルをすべて削除します。
削除の目的は、次に Hadoop クラスターを再フォーマットする必要があるためです。これらのファイルは、以前にファイルがフォーマットされたときに生成されました。これらのファイルを削除せずに Hadoop クラスターを直接再フォーマットすると、後で問題や競合が発生する可能性があります。したがって、これらのファイルを最初に削除する必要があります。
2.Hadoopログファイルを削除する
(1) Hadoop のデータが格納されているファイル配下の内容をすべて削除します (ホストごとに個別に削除する必要があります)。
Hadoop がデータを保存するディレクトリがどこにあるのかわからない場合は、Hadoop インストール ディレクトリの /etc/hadoop/core-site.xml ファイルで確認できます。
(2) クラスターの各ホストで、Hadoop インストール ディレクトリにログ ファイルを入力し、ログの下にあるすべてのファイルを削除します。
注: ここで、Hadoop クラスター内の各ホストを削除する必要があります。
3.Hadoopのフォーマット
hadoop ネームノード -format
4. Hadoopクラスターを起動します。
start-all.sh
5.jpsに確認したところ問題は解決しました。
上記は私が問題を解決するために行った手順です。お役に立てれば幸いです。ご不明な点がございましたら、メッセージを残してください。