Est-il possible de joindre à HDFS fichier à partir de plusieurs clients en parallèle?
Fondamentalement, toute la question est dans le titre. Je me demandais si il est possible d'ajouter à un fichier situé sur HDFS à partir de plusieurs ordinateurs en même temps? Quelque chose comme le stockage de flux d'évènements constamment produite par plusieurs processus. L'ordre n'est pas important.
Je me souviens d'audience sur l'un des Google tech des présentations que GFS prend en charge de telles ajouter des fonctionnalités, mais essayer quelques-uns des tests limités avec HDFS (soit avec un fichier régulier append() ou avec SequenceFile) ne semble pas fonctionner.
Merci,
- Voici quelques informations sur le contexte, pourquoi ajouter n'est pas possible, encore: le Fichier Ajoute dans HDFS
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que c'est possible avec HDFS. Même si vous n'avez pas de soins sur l'ordre des enregistrements, vous ne vous souciez de l'ordre des octets dans le fichier. Vous ne voulez pas Un écrivain d'écrire un registre partiel qui, ensuite, est corrompu par l'écrivain B. C'est un problème difficile pour HDFS à résoudre sur son propre, donc il n'a pas.
Créer un fichier par l'écrivain. Passer tous les fichiers à n'importe quel MapReduce travailleur qui a besoin de lire ces données. C'est beaucoup plus simple et s'adapte à la conception de SF et Hadoop. En cas de non-MapReduce, le code doit lire ces données, comme un ruisseau, puis un ou l'autre volet de chaque fichier dans l'ordre, ou écrire un très rapide travail de MapReduce pour consolider les fichiers.
"HDFS supports single writer at a time for a given file."
Vous pouvez consolider les fichiers comme indiqué dans cette réponse à l'aide degetmerge
juste pour info, probablement, il serait entièrement pris en charge dans hadoop 2.6.x, acorrding pour le TABLEAU de l'article sur le site officiel: https://issues.apache.org/jira/browse/HDFS-7203