2017-08-22 1 views
0

J'ai 5 grappes de machines Linux. Il y a 3 nœuds de données et un maître. À présent, environ 50% de stockage hdfs est disponible sur chaque noeud de données. Mais j'exécuter un travail MapReduce, il est échoué avec l'erreur suivanteHadoop Il ne reste plus d'espace sur le périphérique erro lorsqu'il y a de l'espace disponible

2017-08-21 17:58:47,627 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for blk_6835454799524976171_3615612 bad datanode[0] 10.11.1.42:50010 
2017-08-21 17:58:47,628 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for block blk_6835454799524976171_3615612 in pipeline 10.11.1.42:50010, 10.11.1.43:50010: bad datanode 10.11.1.42:50010 
2017-08-21 17:58:51,785 ERROR org.apache.hadoop.mapred.Child: Error in syncLogs: java.io.IOException: No space left on device 

Alors que sur chaque système df -h donne les informations suivantes

Filesystem    Size Used Avail Use% Mounted on 
devtmpfs     5.9G  0 5.9G 0% /dev 
tmpfs     5.9G 84K 5.9G 1% /dev/shm 
tmpfs     5.9G 9.1M 5.9G 1% /run 
tmpfs     5.9G  0 5.9G 0% /sys/fs/cgroup 
/dev/mapper/centos-root 50G 6.8G 44G 14%/
/dev/sdb     1.8T 535G 1.2T 31% /mnt/11fd6fcc-1f87-4f1e-a53c-54cc7117759c 
/dev/mapper/centos-home 412G 155G 59M 100% /home 
/dev/sda1    494M 348M 147M 71% /boot 
tmpfs     1.2G 16K 1.2G 1% /run/user/42 
tmpfs     1.2G  0 1.2G 0% /run/user/1000 

Comme le montrent plus haut que mon salésien dicsk (DDI) est seulement 31% utilisé mais centos-home est 100%. Alors que hadoop utilise le système de fichiers local dans le travail mapreduce quand il y a suffisamment de HDFS disponibles? Où est le problème? J'ai cherché sur google et j'ai trouvé beaucoup de ces problèmes, mais personne ne couvre ma situation.

+0

Vous pouvez essayer de libérer de l'espace dans votre/'centos-home' et voir si le problème persiste. – Shanky

+0

Certains des fichiers journaux sont stockés sur un système de fichiers local. Essayez de libérer de l'espace sur '/ home' et cela devrait résoudre votre problème. – daemon12

Répondre

0

syncLogs n'utilise pas HDFS, il écrit à hadoop.log.dir si si vous utilisez MapReduce, recherchez la valeur de hadoop.log.dir dans /etc/hadoop/conf/taskcontroller.cfg.

Si vous utilisez YARN, recherchez la valeur yarn.nodemanager.log-dirs dans le fichier yarn-site.xml.

L'une d'elles devrait vous indiquer où vous écrivez vos journaux. Une fois que vous avez déterminé quel système de fichiers a le problème, vous pouvez libérer de l'espace à partir de là. Une autre chose à retenir est que vous pouvez obtenir "Pas d'espace sur l'appareil" si vous avez épuisé vos inodes sur votre disque. df -i le montrerait.