web-dev-qa-db-fra.com

L'écriture sur HDFS ne peut être répliquée que sur des nœuds au lieu de minReplication (= 1)

J'ai 3 nœuds de données en cours d'exécution, tout en exécutant un travail, je reçois l'erreur suivante donnée,

Java.io.IOException: Le fichier/utilisateur/ashsshar/olhcache/loaderMap9b663bd9 n'a été répliqué que sur 0 nœud au lieu de minReplication (= 1). Il y a 3 datanode (s) en cours d'exécution et 3 nœud (s) sont exclus dans cette opération . at org.Apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget (BlockManager.Java:1325)

Cette erreur survient principalement lorsque l'espace de nos instances DataNode est saturé ou si les DataNodes ne sont pas en cours d'exécution. J'ai essayé de redémarrer les DataNodes tout en obtenant la même erreur.

les rapports dfsadmin sur les nœuds de mon cluster indiquent clairement que beaucoup d'espace est disponible.

Je ne sais pas pourquoi cela se produit.

22
Ashish Sharma

1.Stop tous les démons Hadoop 

for x in `cd /etc/init.d ; ls hadoop*` ; do Sudo service $x stop ; done

2.Retirez tous les fichiers de /var/lib/hadoop-hdfs/cache/hdfs/dfs/name 

Eg: devan@Devan-PC:~$ Sudo rm -r /var/lib/hadoop-hdfs/cache/

3.Format Namenode

Sudo -u hdfs hdfs namenode -format

4.Démarrez tous les démons Hadoop

for x in `cd /etc/init.d ; ls hadoop*` ; do Sudo service $x start ; done

Arrêtez tous les services Hadoop

15
Devan M S

J'ai eu le même problème, je manquais beaucoup d'espace disque. Libérer le disque l'a résolu.

11
divyaravi
  1. Vérifiez si votre DataNode est en cours d'exécution, utilisez la commande: jps.
  2. Si c'est pas en cours d'exécution attendez de temps en temps et réessayez.
  3. Si c'est en cours d'exécution , je pense que vous devez reformater votre DataNode.
2
twlkyao

Ce que je fais habituellement lorsque cela se produit, c’est que je vais dans le répertoire tmp/hadoop-username/dfs/et que je supprime manuellement les dossiers data et name (en supposant que vous utilisez un environnement Linux. ).

Formatez ensuite le fichier DFS en appelant bin/hadoop namenode -format (assurez-vous de répondre avec une majusculeYlorsque le système vous demande si vous souhaitez formater; si le système ne vous demande pas, - relancez la commande).

Vous pouvez ensuite redémarrer hadoop en appelant bin/start-all.sh

1
lvella

Solution très simple pour le même problème sous Windows 8.1
J'ai utilisé le système d’exploitation Windows 8.1 et Hadoop 2.7.2, pour résoudre ce problème.

  1. Lorsque j'ai démarré le format de fichier namenode hdfs, j'ai remarqué qu'il y avait un verrou dans mon répertoire. veuillez vous reporter à la figure ci-dessous.
     HadoopNameNode
  2. Une fois, j’ai supprimé le dossier complet comme indiqué ci-dessous, puis j’ai refait le fichier hdfs namenode -format. Folder location
     Full Folder Delete
  3. Après avoir effectué les deux étapes ci-dessus, je pouvais placer avec succès mes fichiers requis dans le système HDFS. J'ai utilisé la commande start-all.cmd pour démarrer le fil et le nom de code.
0
Praveen Kumar K S

Dans mon cas, ce problème a été résolu en ouvrant le port du pare-feu sur 50010 sur les codes de données.

0
fracca

J'ai eu ce problème et je l'ai résolu comme ci-dessous:

  1. Trouvez où sont sauvegardées vos métadonnées/données de namenode et vos nom de fichier; si vous ne le trouvez pas, faites simplement cette commande sur mac pour le trouver (il se trouve dans un dossier appelé "tmp")

    find/usr/local/Cellar/-name "tmp"; 

    la commande find est comme ceci: find <"directory"> -name <"toute indication de chaîne pour ce répertoire ou ce fichier">

  2. Après avoir trouvé ce fichier, insérez-y cd ./Usr/local/Cellar // hadoop/hdfs/tmp

    puis cd à dfs

    puis en utilisant la commande -ls, vous verrez que les répertoires de données et de noms sont situés à cet emplacement.

  3. En utilisant la commande remove, supprimez les deux:

    rm -R données. et rm -R nom

  4. Allez dans le dossier bin et terminez tout si vous ne l'avez pas déjà fait:

    sbin/end-dfs.sh

  5. Quittez le serveur ou l'hôte local.

  6. Connectez-vous à nouveau au serveur: ssh <"nom du serveur">

  7. démarrez le dfs:

    sbin/start-dfs.sh

  8. Formatez le namenode pour en être sûr:

    bin/hdfs namenode -format

  9. vous pouvez maintenant utiliser les commandes hdfs pour télécharger vos données dans dfs et exécuter les travaux MapReduce.

0
Reihan_amn