J'ai un scénario dans lequel je traite des milliers de petits fichiers en utilisant Hadoop. La sortie du travail Hadoop doit ensuite être utilisée comme entrée pour un algorithme non-Hadoop. Dans le flux de production actuel, les données sont lues, converties en fichiers de séquence, traitées et les petits fichiers résultants sont ensuite envoyés à HDFS sous la forme d'un fichier de séquence. Cependant, l'algorithme non-Hadoop ne peut pas comprendre le fichier de séquence. Par conséquent, j'ai écrit un autre travail Hadoop simple pour lire les données des fichiers résultant du fichier de séquence et créer les petits fichiers finaux qui peuvent être utilisés par l'algorithme non-Hadoop.Hadoop Yarn écrit dans le système de fichiers local
La capture ici est que pour le travail final, je dois lire les fichiers de séquence de HDFS et écrire dans le système de fichiers local de chaque nœud à traiter par l'algorithme non-Hadoop. J'ai essayé de définir le chemin de sortie comme file:///<local-fs-path>
et en utilisant Hadoop LocalFileSystem
classe. Cependant, cela produit uniquement les résultats finaux au système de fichiers local de namenode. Juste pour compléter l'image, j'ai 10 nœuds Hadoop configuration avec Yarn. Y at-il un moyen en mode Hadoop Yarn de lire les données à partir de HDFS et d'écrire les résultats dans le système de fichiers local de chaque noeud de traitement?
Merci
Vous pouvez monter un lecteur NFS ... Je ne vois pas l'intérêt d'écrire sur des datanodes locales si vous avez juste besoin de collecter tous les résultats. En outre, hadoop ne fonctionne pas bien avec des milliers de fichiers minuscules, alors êtes-vous sûr que vous utilisez les processus corrects? –
Malheureusement, les exigences du projet sont comme indiqué. Le traitement avec Hadoop nous a en fait permis de gagner plus de 20 heures de travail malgré un grand nombre de fichiers, donc je dirais que nous sommes bons avec Hadoop. Merci d'avoir suggéré NFS, nous l'avons déjà considéré. –