Comment faire pour corriger la corruption de Fichiers HDFS
Comment quelqu'un de corriger une SF qui est corrompu? J'ai regardé sur le Apache/Hadoop site web et il a déclaré que son fsck
commande, ce qui ne résout pas le problème. J'espère que quelqu'un qui a rencontré ce problème avant peut me dire comment résoudre ce problème.
Contrairement à un traditionnel fsck utilitaire natif pour les systèmes de fichiers, cette commande ne permet pas de corriger les erreurs qu'il détecte. Normalement NameNode corrige automatiquement la plupart de la valeur recouvrable des échecs.
Quand j'ai couru bin/hadoop fsck /-delete
, il a énuméré les fichiers qui ont été corrompus ou manquants blocs. Comment puis-je faire pas corrompu? C'est une pratique de la machine afin que je puisse souffler tout de suite, mais quand nous allons vivre, je ne vais pas être en mesure de les "fixer" par souffle tout de suite, donc je suis en train de le comprendre maintenant.
- Stack Overflow est un site pour la programmation et les questions de développement. Cette question semble être hors-sujet, car il n'est pas sur la programmation ou le développement. Voir Quels sont les sujets que pouvez-vous nous parler ici dans le Centre d'Aide. Peut-être Super-Utilisateur ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander cela.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
pour déterminer quels fichiers sont d'avoir des problèmes. Regardez à travers la sortie de manquant ou endommagé blocs (ignorer les sous-répliqué bloque pour l'instant). Cette commande est très
verbose surtout sur un grand système de fichiers HDFS donc j'ai l'habitude de descendre à
le sens de sortie avec
qui ignore les lignes avec rien que des points et des lignes de parler de la réplication.
Une fois que vous trouver un fichier qui est corrompu
Utiliser ce résultat pour déterminer où des blocs peut vivre. Si le fichier est
plus grand que votre taille de bloc, il peut avoir plusieurs blocs.
Vous pouvez utiliser le rapporté des numéros de bloc pour aller autour de l'
datanodes et le namenode les journaux à la recherche de la machine ou des machines
sur lequel les blocs vécu. Essayez de regarder pour les erreurs de système de fichiers
sur ces machines. Manquant de points de montage, datanode pas en cours d'exécution,
système de fichiers reformaté/remis en service. Si vous pouvez trouver un problème
de cette manière, et amener le bloc de retour en ligne de ce fichier sera en bonne santé
de nouveau.
Faire mousser, rincez-les et répétez jusqu'à ce que tous les fichiers soient en bonne santé ou vous avez épuisé
toutes les solutions de rechange à la recherche pour les blocs.
Une fois que vous déterminer ce qui s'est passé et vous ne pouvez plus récupérer des blocs,
utilisez simplement le
commande pour obtenir votre système de fichiers HDFS retour à la bonne santé de sorte que vous pouvez commencer à
le suivi des nouveaux erreurs lorsqu'elles se produisent.
bin/hadoop fsck / -delete
. Après cela, la SF n'était plus corrompu et certains fichiers terminés en /lost+found. Il n'a pas fait cela avant, quand j'ai arrêté la SF et redémarré plusieurs fois. Je upvoted et accepté votre réponse =) Merci encore une fois.hadoop fsck / -delete
hdfs dfsadmin -safemode leave
avanthadoop fsck -delete
serait de travailler. Sinon, il a juste gardé sibylline disantfsck failed on '/'
Si vous voulez juste pour obtenir votre HDFS retour à l'état normal et ne vous inquiétez pas beaucoup sur les données, puis
Ce sera la liste de la corruption HDFS blocs:
hdfs fsck -list-corruptfileblocks
Cela permettra de supprimer le corrompu HDFS blocs:
hdfs fsck /-delete
Note que, vous pourriez avoir à utiliser
sudo -u hdfs
si vous n'êtes pas l'utilisateur sudo (en supposant que "sf" est le nom de l'utilisateur sudo)la solution a fonctionné pour moi : https://community.hortonworks.com/articles/4427/fix-under-replicated-blocks-in-hdfs-manually.html
démarrer tous les démons et exécutez la commande comme "hadoop namenode -récupérer -force" d'arrêter les démons et recommencer.. attendre un certain temps pour récupérer les données.