私は3つのデータノードを実行していますが、ジョブを実行しているときに以下のエラーが表示されます
Java.io.IOException:ファイル/ user/ashsshar/olhcache/loaderMap9b663bd9は、minReplication(= 1)ではなく0ノードにのみ複製できました。この操作では3つのデータノードが実行されており、3つのノードが除外されています。 org.Apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.Java:1325)で
このエラーは主に、DataNodeインスタンスのスペースが不足した場合、またはDataNodeが実行されていない場合に発生します。 DataNodeを再起動しようとしましたが、それでも同じエラーが発生しました。
クラスターノードのdfsadmin -reportsは、多くのスペースが利用可能であることを明確に示しています。
なぜこれが起こっているのか分かりません。
1.すべてのHadoopデーモンを停止する
for x in `cd /etc/init.d ; ls hadoop*` ; do Sudo service $x stop ; done
2. /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
からすべてのファイルを削除します
Eg: devan@Devan-PC:~$ Sudo rm -r /var/lib/hadoop-hdfs/cache/
3.Namenodeのフォーマット
Sudo -u hdfs hdfs namenode -format
4.すべてのHadoopデーモンを起動します
for x in `cd /etc/init.d ; ls hadoop*` ; do Sudo service $x start ; done
私は同じ問題を抱えていた、私は非常に少ないディスクスペースで実行されていました。ディスクを解放すると解決しました。
jps
コマンドを使用します。これが発生したときに通常行うことは、tmp/hadoop-username/dfs /ディレクトリに移動し、dataおよびnameフォルダを手動で削除することです(Linux環境で実行していると仮定)。
次に、bin/hadoop namenode -formatを呼び出してdfsをフォーマットします(必ず、大文字で答えてください[〜#〜] y [〜#〜]フォーマットするかどうか、尋ねられない場合は、コマンドを再実行してください)。
その後、bin/start-all.shを呼び出すことで、もう一度hadoopを起動できます。
私の場合、この問題はデータノードの50010でファイアウォールポートを開くことで解決しました。
私はこの問題を抱えており、以下のように解決しました:
データノードとネームノードのメタデータ/データが保存されている場所を見つけます。見つからない場合は、Macでこのコマンドを実行して見つけてください(「tmp」というフォルダーにあります)
/ usr/local/Cellar/-name "tmp";を検索
findコマンドは次のとおりです。find <"directory"> -name <"そのディレクトリまたはファイルの任意の文字列の手がかり">
そのファイルを見つけたら、cdしてください。/usr/local/Cellar // hadoop/hdfs/tmp
次にdfsにcdします
-lsコマンドを使用すると、データと名前のディレクトリがそこにあることがわかります。
Removeコマンドを使用して、両方を削除します。
rm -R data。およびrm -R name
Binフォルダーに移動し、まだ実行していない場合はすべて終了します。
sbin/end-dfs.sh
サーバーまたはローカルホストを終了します。
サーバーに再度ログインします:ssh <"サーバー名">
dfsを開始します。
sbin/start-dfs.sh
確認のためにnamenodeをフォーマットします。
bin/hdfs namenode -format
hdfsコマンドを使用してデータをdfsにアップロードし、MapReduceジョブを実行できるようになりました。