2017-08-20 1 views
0

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

+0

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? –

+0

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é. –

Répondre

0

Pas vraiment. Alors que vous pouvez écrire à LocalFileSystem, vous ne pouvez pas demander à YARN d'exécuter votre application sur tous les nœuds. En outre, en fonction de la configuration de votre cluster, les gestionnaires de nœuds de YARN risquent de ne pas fonctionner sur tous les nœuds de votre système.

Une solution de contournement possible est de conserver vos fichiers convertis dans HDFS, puis demandez à votre processus non-Hadoop d'appeler d'abord hdfs dfs -copyToLocal.