MapReduce : Un cadre de calcul distribué tolérant aux pannes. MapReduce vous permet d'opérer sur d'énormes quantités de données - avec beaucoup de travail pour éviter les pannes dues au matériel. MapReduce est un mauvais choix pour calculer les résultats à la volée car il est lent. (Un travail MapReduce typique prend de l'ordre des minutes ou des heures, pas des microsecondes)
Un travail MapReduce prend un fichier (ou un magasin de données) comme entrée et écrit un fichier de résultats. Si vous souhaitez que ces résultats soient disponibles pour une application, il est de votre responsabilité de placer ces données dans un endroit accessible. Ceci 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 vous envisagez d'utiliser MapReduce dans la construction de systèmes en temps réel est celle de la formation de votre modèle et de l'application de votre modèle. Si vous pensez que vos paramètres de modèle ne changent pas rapidement, vous pouvez les adapter avec MapReduce, puis disposer d'un mécanisme pour accéder à ces paramètres de pré-ajustement lorsque vous souhaitez appliquer votre modèle.
Storm : Un système de calcul en temps réel et en streaming. Storm est un framework en ligne, ce qui signifie, en ce sens, un service qui interagit avec une application en cours d'exécution. Contrairement à MapReduce, il reçoit de petites données (pas un fichier entier) lors de leur traitement dans votre application. Vous définissez un DAG d'opérations à effectuer sur les données. Un cas d'utilisation commun et simple pour Storm est le suivi des compteurs et l'utilisation de ces informations pour remplir un tableau de bord en temps réel.
Storm 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 qui vous intéressent et jeter le reste. En réalité, vous avez probablement une couche de persistance dans votre application qui a déjà enregistré les données, et c'est donc une bonne et justifiée séparation des préoccupations.
Si vous voulez en savoir plus ...
Si vous souhaitez en savoir plus sur les systèmes en temps réel qui ajustent les paramètres avec MR et appliquent les modèles d'une manière différente, voici des diapositives pour une conférence que j'ai donnée sur la construction de moteurs de recommandation en temps réel sur HBase.
Un excellent article qui allie le comptage en temps réel et la persistance de manière intéressante est la personnalisation de Google Actualités: filtrage collaboratif en ligne évolutif
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 via Storm ou MR.