J'ai un système que je souhaite distribuer où j'ai un certain nombre de très gros fichiers binaires non divisibles que je souhaite traiter de manière distribuée. Ceux-ci sont de l'ordre de quelques centaines de Gb. Pour diverses raisons fixes et spécifiques à l'implémentation, ces fichiers ne peuvent pas être traités en parallèle mais doivent être traités séquentiellement par le même processus jusqu'à la fin.Hadoop pour le traitement de très gros fichiers binaires
L'application est développée en C++ donc je considérerais les pipes Hadoop pour streamer les données dedans et dehors. Chaque instance devra traiter de l'ordre de 100 Go à 200 Go séquentiellement de ses propres données (actuellement stockées dans un fichier), et l'application est actuellement (probablement) limitée aux E/S, il est donc important que chaque travail soit exécuté entièrement localement. Je souhaite vivement que HDFS héberge ces données - la possibilité de conserver automatiquement des copies redondantes et de les rééquilibrer à mesure que de nouveaux nœuds sont ajoutés sera très utile. Je suis également féru de map reduce pour sa simplicité de calcul et son exigence d'héberger le calcul le plus près possible des données. Cependant, je me demande à quel point Hadoop est adapté à cette application particulière. Je sais que pour représenter mes données, il est possible de générer des fichiers non divisibles, ou bien de générer d'énormes fichiers de séquence (dans mon cas, ils seraient de l'ordre de 10 To pour un seul fichier - devrais-je emballer toutes mes données en une). Et c'est donc possible de traiter mes données en utilisant Hadoop. Cependant, il semble que mon modèle ne correspond pas très bien à Hadoop: la communauté est-elle d'accord? Ou avez-vous des suggestions pour établir ces données de manière optimale? Ou même pour d'autres systèmes informatiques en cluster qui pourraient mieux s'adapter au modèle?
Cette question est peut-être un doublon de questions existantes sur hadoop, mais à l'exception que mon système nécessite un ordre de grandeur ou deux autres données par fichier individuel (auparavant, j'ai vu la question posée sur les fichiers individuels de quelques Gb en taille). Alors pardonnez-moi si cela a déjà été répondu - même pour cette taille de données.
Merci,
Alex
Intéressant. Merci beaucoup pour le commentaire ... Dans mon cas particulier, j'ai spécifiquement besoin que les tâches soient hébergées sur les machines sur lesquelles les données sont stockées. D'un coup d'œil très bref sur GNU parallel (qui semble plutôt utile), je ne suis pas sûr qu'il interagisse avec un FS distribué de la manière que je rechercherais pour activer ce type de pattern. –
Pourquoi pas? Si vous utilisez déjà un système de fichiers distribué, ce problème devient beaucoup plus facile.Utilisez simplement SSH ou GNU parallel pour répartir le calcul entre les nœuds. La commande émise sait comment lire les données du système de fichiers distribué et faire quelque chose avec lui. Le mécanisme de distribution (SSH) n'a pas besoin de savoir quoi que ce soit sur le système de fichiers distribué – bajafresh4life