Pourquoi n'est-ce pas Hadoop mis en œuvre à l'aide de MPI?
Corrigez-moi si je me trompe, mais ma compréhension est que Hadoop ne pas utiliser MPI pour la communication entre les différents nœuds.
Quelles sont les raisons techniques à cela?
Je pourrais danger quelques devine, mais je ne sais pas comment MPI est mis en œuvre "sous le capot" pour savoir si, oui ou non, je suis à droite.
Venez pour penser à elle, je ne suis pas entièrement familier avec Hadoop internals soit. Je comprends le cadre au niveau conceptuel (carte/combiner/shuffle/réduire et comment cela fonctionne à un niveau élevé), mais je ne connais pas les tenants et aboutissants de la mise en œuvre de détails. J'ai toujours supposé que Hadoop a été transmission de données sérialisées structures (peut-être GPBs) sur une connexion TCP, par exemple, pendant la lecture aléatoire de phase. Laissez-moi savoir si ce n'est pas vrai.
Vous devez vous connecter pour publier un commentaire.
L'une des grandes caractéristiques de Hadoop/réduire la carte est de la tolérance de pannes. La tolérance de panne n'est pas prise en charge dans la plupart (tous?) actuel implémentations MPI. Il est pensé pour les futures versions de OpenMPI.
Sandia labs a une version de map-reduce qui utilise MPI, mais il manque de tolérance de panne.
MPI est l'Interface de Passage de Messages. Là, dans le nom - il n'y a pas de localité des données. Vous envoyer les données vers un autre nœud pour qu'il soit calculé sur. Ainsi, MPI est liées au réseau en termes de performances lorsque vous travaillez avec des données de grande taille.
MapReduce avec Hadoop Distributed File System duplique les données de sorte que vous pouvez faire votre calcul en local de stockage - en streaming sur la disquette, et directement au processeur. Ainsi, MapReduce prend avantage des locaux de stockage pour éviter le goulot d'étranglement du réseau lorsque vous travaillez avec des données de grande taille.
Ce n'est pas à dire que MapReduce n'utilise pas le réseau... il n': et le shuffle est souvent la partie la plus lente de l'emploi! Mais il l'utilise comme un peu, et aussi efficacement que possible.
Pour résumer: Hadoop (et Google sont les choses avant qu'il) ne pas utiliser MPI car il ne pouvait pas avoir utilisé MPI et travaillé. MapReduce systèmes ont été développés spécifiquement pour l'adresse MPI lacunes en compte de l'évolution du matériel: la capacité du disque explose (et des données), la vitesse de disque stagnante, les réseaux lents, processeur gigahertz à son comble, le multi-core prendre sur la loi de Moore.
La vérité est Hadoop pourraient être mises en œuvre à l'aide de MPI. MapReduce a été utilisé via MPI pour aussi longtemps que MPI a été autour. MPI a des fonctions comme 'bcast' - la diffusion des données, "alltoall' - envoyer toutes les données de tous les nœuds, de "réduire" et "allreduce'. Hadoop supprime la nécessité d'implémenter explicitement votre distribution de données et de recueillir vos résultats par des méthodes d'emballage sortant de communication de commande avec une réduction de la commande. L'avantage est que vous devez vous assurer que votre problème convient le "réduire" la fonction avant de mettre en oeuvre de Hadoop. Il pourrait être votre problème est un meilleur ajustement pour 'scatter'/'rassembler' et vous devez utiliser un Torque/MAUI/SGE avec MPI au lieu de Hadoop. Enfin, MPI ne pas écrire vos données sur le disque comme décrit dans un autre post, à moins que vous suivez votre méthode de réception avec une écriture sur disque. Il fonctionne exactement comme Hadoop n'en envoyant votre processus/de données à un autre endroit pour faire le travail. L'important est de comprendre votre problème avec suffisamment de détails pour être sûr de MapReduce est la plus efficace et la parallélisation de la stratégie, et être conscient que de nombreuses autres stratégies existent.
Il n'y a pas de restriction qui empêche MPI programmes d'utiliser des disques locaux. Et bien sûr MPI-programmes de toujours essayer de travailler localement sur des données en mémoire vive ou sur le disque local - comme toutes les applications parallèles. En MPI 2.0 (qui n'est pas une future version, il a été ici pendant une décennie), il est possible d'ajouter et de supprimer des processus de manière dynamique, ce qui rend possible la mise en œuvre d'applications qui permet de récupérer, par exemple, d'un processus en train de mourir sur certains nœud.
Peut-être hadoop n'est pas à l'aide de MPI MPI car généralement nécessite un codage en C ou en Fortran et a un aspect plus scientifique/académique développeur de la culture, tandis que hadoop semble plus motivé par des professionnels de l'informatique avec une forte Java biais. MPI est très faible et sujette à erreur. Il permet une utilisation très efficace de matériel, de la mémoire et du réseau. Hadoop essaie d'être de haut niveau et robuste, avec une efficacité de pénalité. MPI programmation exige de la discipline et le plus grand soin pour être portable, et nécessite encore de la compilation de code source sur chaque plate-forme. Hadoop est portable, facile à installer et assez rapide et sale de développement d'applications. C'est un champ d'application différent.
Encore, peut-être le hadoop hype sera suivie par d'autres ressources alternatives efficaces, peut-être basée sur MPI.
Dans MapReduce 2.0 (MRv2) ou de la LAINE applications peuvent être écrites (ou d'être porté à exécuter) sur le dessus du FIL.
Donc, par essence, il y aura une Prochaine Génération d'Apache Hadoop MapReduce(MAPREDUCE-279) et un moyen de prendre en charge plusieurs paradigmes de programmation sur le dessus de cela. On peut donc écrire MPI applications sur le FILS. MapReduce paradigme de programmation seront pris en charge en tant que par défaut toujours.
http://wiki.apache.org/hadoop/PoweredByYarn Devrait donner une idée de ce que toutes les applications sont développées sur le dessus de FIL, y compris l'Open MPI.
Si nous suffit de regarder la Carte /réduction des étapes et de la planification d'une partie de Hadoop, alors je dirais MPI est une bien meilleure /la méthodologie de la technologie. MPI prend en charge différents échanger des modèles comme la diffusion, de barrière, de recueillir tous, scatter /gather (ou l'appeler réduire la carte). Mais Hadoop a aussi le HDFS. Avec cela, les données peuvent s'asseoir beaucoup plus près des nœuds de traitement. Et si vous regardez le problème de l'espace Hadoop-comme les technologies utilisées pour les sorties de la réduction des mesures ont été en fait assez grandes, et vous ne voulez pas avoir toutes les informations marais votre réseau. C'est pourquoi Hadoop tout enregistré sur le disque. Mais les messages de contrôle pourrait avoir utilisé MPI, et les messages MPI pourrait juste avoir des pointeurs (url ou fichier poignées) pour les données réelles sur le disque ...