Question

Quelqu'un peut-il bien vouloir me parler des compromis impliqués lors du choix entre la tempête et MapReduce dans Hadoop Cluster pour le traitement des données? Bien sûr, en dehors de l'évidente, que Hadoop (traitement via MapReduce dans un cluster Hadoop) est un système de traitement par lots et Storm est un système de traitement en temps réel.

J'ai travaillé un peu avec Hadoop Eco System, mais je n'ai pas travaillé avec Storm. Après avoir regardé par beaucoup de présentations et d'articles, je n'ai toujours pas été en mesure de trouver une réponse satisfaisante et complète.

Note: Le compromis entre terme ici ne vise pas à comparer à des choses semblables. Il est censé représenter les conséquences d'obtenir des résultats en temps réel qui sont absents d'un système de traitement par lots.

Était-ce utile?

La solution

MapReduce : Une tolérance de pannes distribué cadre de calcul. MapReduce vous permet de fonctionner sur d'énormes quantités de Data- avec beaucoup de travail mis pour prévenir les défaillances dues au matériel. MapReduce est un mauvais choix pour le calcul des résultats à la volée, car il est lent. (Un travail MapReduce typique prend de l'ordre de minutes ou heures, et non microsecondes)

Un travail MapReduce prend un fichier (ou un magasin de données) en entrée et écrit un fichier de résultats. Si vous voulez que ces résultats à la disposition d'une application, il est de votre responsabilité de mettre ces données dans un endroit accessible. Cela est probablement lent, et il y aura un décalage entre les valeurs que vous pouvez afficher, et les valeurs qui représentent votre système dans son état actuel.

Une distinction importante à faire lorsque l'on considère l'utilisation MapReduce dans la construction de systèmes en temps réel est celui de la formation de votre modèle, et l'application de votre modèle. Si vous pensez que vos paramètres du modèle ne les changent pas rapidement, vous pouvez adapter à MapReduce, et un mécanisme d'accès à ces paramètres pré-ajustement lorsque vous souhaitez appliquer votre modèle.

Tempête : en temps réel, streaming système de calcul. Storm est cadre en ligne, ce qui signifie, dans ce sens, un service qui interagit avec une application en cours d'exécution. Contrairement à MapReduce, il reçoit de petits morceaux de données (pas un fichier entier) car ils sont traités dans votre application. Vous définissez une DAG des opérations à effectuer sur les données. Un cas de commun et de l'utilisation simple pour Storm compteurs de suivi et utiliser ces informations pour remplir un tableau de bord en temps réel.

Tempête n'a rien (nécessairement) à voir avec la persistance de vos données. Ici, le streaming est une autre façon de dire garder les informations que vous aimez et jeter le reste. En réalité, vous avez probablement une couche de persistance dans l'application qui a déjà enregistré les données, et donc cela une bonne séparation et justifiée des préoccupations.

Si vous voulez en savoir plus ... Si vous souhaitez en savoir plus sur les systèmes en temps réel que les paramètres d'ajustement avec MR et appliquer les modèles d'une manière différente ici sont des diapositives pour une conférence que je donnais sur la construction de moteurs de recommandation à temps réel sur HBase.

Un excellent papier mariant comptage en temps réel et la persistance d'une manière intéressante est Google Nouvelles Personnalisation: évolutive de collaboration en ligne filtrage

Un autre mariage intéressant de MR et Storm est SummingBird . Summingbird vous permet de définir des opérations d'analyse de données qui peuvent être appliquées par la tempête ou MR.

Autres conseils

Ceci est un peu comme poser des questions sur les compromis entre la poêle et le tiroir de l'argenterie. Ils ne sont pas deux choses que vous comparez, vraiment. Vous pouvez les utiliser ensemble dans le cadre d'un projet plus vaste.

Hadoop lui-même est pas une chose, mais un nom pour une fédération de services, comme HDFS, Ruche, HBase, MapReduce, etc. Storm est quelque chose que vous utilisez avec certains de ces services, comme HDFS ou HBase. Il est un cadre de traitement courant. Il y a d'autres au sein de l'écosystème Hadoop, comme Spark étendu en streaming.

Quand souhaitez-vous choisir un cadre de traitement flux? lorsque vous devez réagir à de nouvelles données en temps quasi-temps réel. Si vous avez besoin de ce genre d'outil, de déployer ce genre d'outil, aussi.

Licencié sous: CC-BY-SA avec attribution
scroll top