28 votes

Avantages et inconvénients du céleri vs disco vs hadoop vs autres packages informatiques distribués

Je travaille sur une application web (construit dans django) destiné aux moyennes à grande échelle de l'analyse des données. J'imagine à l'aide d'une tâche de la file d'attente de l'alimentation d'une banque de serveurs, ou peut-être à la demande des instances EC2 pour supporter la charge.

Avant d'entrer dans le développement, je suis en train de décider quel paquet(s) à utiliser pour le calcul distribué. J'ai regardé dans le céleri, le disco, et sur hadoop mapreduce -- et ils ont tous l'air assez bonne.

Quels conseils pouvez-vous donner sur les avantages et les inconvénients des différents systèmes?

Ceux qui...?

  • ...sont plus faciles à travailler avec python/django?
  • ...jouer gentil avec les autres?
  • ...ont tendance à travailler mieux pour quelles tâches?
  • ...imposer des restrictions sur d'autres aspects de l'architecture du système (par exemple, conception de base de données)?
  • ...avoir la plus grande base d'utilisateurs et le meilleur de la documentation?
  • ...ont la plus raide de la courbe d'apprentissage?

BTW, j'ai intégré multi-core et des applications client-serveur à l'aide de python du multitraitement, mais c'est la mesure de mon expérience pratique de l'informatique distribuée. La plupart de la théorie est familier, mais je n'ai jamais utilisé l'un des paquets mentionnés ici.

22voto

hymloth Points 2832

Tout d'abord, je n'ai aucune expérience avec discothèque et peu d'expérience avec hadoop. Ensuite, pour répondre à vos questions une par une:

  • sont plus faciles à travailler avec python/django?

    Le céleri est le gagnant. Il a une intégration directe avec django via django-céleri, bien que riche en fonctionnalités et simple à utiliser. Je suppose que disco vient en deuxième position ( vous écrire du code python ) et hadoop est le dernier ( vous pouvez écrire du code python, mais dans d'obscures façons).

  • jouer gentil avec les autres?

    Tout le monde peut jouer gentil avec les autres, à condition qu'il existe une commune de la couche sur laquelle ils peuvent communiquer ( XML, JSON, etc...).

  • ont tendance à travailler mieux pour quelles tâches?

    Disco et hadoop à utiliser le paradigme mapReduce, et le mot "big data" vient à l'esprit. Si vous avez beaucoup de données et vous souhaitez effectuer un traitement sur chacun d'eux, puis mapReduce est une solution optimale. Le céleri est un système distribué de la tâche de la file d'attente, qui est plus "ouvert et agile" dans les façons de mettre en œuvre des traitements distribués/schemas.

  • imposer des restrictions sur d'autres aspects de l'architecture du système (par exemple, conception de base de données)?

    Je ne crois pas qu'il existe un (sérieux) de restriction pour l'un des candidats (corrigez-moi si je me trompe).

  • avoir la plus grande base d'utilisateurs et le meilleur de la documentation?

    Ici, hadoop est probablement le vainqueur. Le céleri a une bonne communauté et beaucoup de stackoverflow questions :). Je ne sais pas pour les Disco.

  • ont la plus raide de la courbe d'apprentissage?

    Je crois que le Céleri a la plus raide de la courbe d'apprentissage, sérieusement.. Hadoop est un peu difficile.. Ne sais pas pour la Disco, mais je soupçonne que c'est dans le milieu.

    Pour résumer, si vous voulez une grande pythonic outil de général de traitement distribué, facile à utiliser et rapide à apprendre, avec plein de django-intégration, aller avec le Céleri. D'autre part, si vos données "pleurer" pour mapReduce, puis suivez votre coeur..

4voto

UsAaR33 Points 1036

Je souhaite compléter hymloth excellente réponse avec une autre option: utiliser ready-made plates-formes informatiques distribuées plutôt que sur un ensemble d'installer sur vos propres serveurs. PiCloud (disclaimer: je suis un employé de PiCloud) est l'un avec de profondes Python intégration et le mieux est de comparer avec le Céleri. Les avantages de l'utilisation de l'offre de services est que vous n'avez pas besoin de gérer toute l'infrastructure de votre file d'attente - ce qui facilite le déploiement, la gestion, la robustesse et l'évolutivité. L'inconvénient est possible augmentation de la surcharge et une certaine perte de la capacité de personnalisation.

Pour couvrir vos questions:

  • ...sont plus faciles à travailler avec python/django?

PiCloud est très simple à utiliser dans Python. Pour créer une charge de travail, il suffit de passer n'importe quelle fonction python (que nous appellerons foo) en cloud.call de la fonction et de l' foo sera exécutée de manière asynchrone sur le cloud. Django est bien pris en charge; un exemple plus détaillé de l'utilisation de Django et PiCloud est trouvé ici:

  • ...jouer gentil avec les autres?

L'un de ces systèmes de communiquer correctement sur PiCloud. D'autre part, il existe certaines limites à ce que vous pouvez faire sur PiCloud; il est par exemple pas possible de faire fonctionner un MapReduce de cluster ou de Céleri File d'attente des Tâches directement sur PiCloud. (Tout système installé sur vos propres machines de déchargement de travail à PiCloud; PiCloud ne peut pas accueillir votre mapreduce/céleri cluster cependant).

...ont tendance à travailler mieux pour quelles tâches?

Comme le Céleri, PiCloud est un système distribué de la tâche de la file d'attente. Il peut gérer n'importe quelle tâche. Pour s'assurer que la surcharge de l'aide PiCloud est minime, les tâches devraient prendre au moins 500 ms à traiter. (morceau de petites tâches plus grands, si possible).

...imposer des restrictions sur d'autres aspects de l'architecture du système (par exemple, conception de base de données)?

PiCloud peut se connecter à n'importe quel système de stockage.

...avoir la plus grande base d'utilisateurs et le meilleur de la documentation?

Comme un produit commercial, PiCloud a de moins en moins d'utilisateurs que les entièrement open-source de céleri. Comme pour la documentation, nous considérons qu'il est tout à fait complète.

...ont la plus raide de la courbe d'apprentissage?

Dans mon (certes biaisée) avis, PiCloud est le plus facile à obtenir à bord, en particulier parce que si peu de installer est nécessaire. L' apprêt est tout ce que vous devez obtenir commencé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X