web-dev-qa-db-fra.com

MapReduce ou Spark?

J'ai testé hadoop et mapreduce avec cloudera et je l'ai trouvé assez cool, je pensais que j'étais la solution BigData la plus récente et la plus pertinente. Mais il y a quelques jours, j'ai trouvé ceci: https://spark.incubator.Apache.org/

Un "système informatique de cluster ultra-rapide", capable de fonctionner au sommet d'un cluster Hadoop, et apparemment capable d'écraser mapreduce. J'ai vu que cela fonctionnait plus dans RAM que mapreduce. Je pense que mapreduce est toujours pertinent lorsque vous devez faire du cluster computing pour surmonter les problèmes d'E/S que vous pouvez avoir sur une seule machine. Mais depuis Spark peut faire les tâches que mapreduce fait, et peut être bien plus efficace sur plusieurs opérations, n'est-ce pas la fin de MapReduce? Ou y a-t-il quelque chose de plus que MapReduce peut faire, ou MapReduce être plus efficace que Spark dans un certain contexte?

26
Nosk

MapReduce est orienté batch par nature. Ainsi, tous les cadres au-dessus des implémentations MR comme Hive et Pig sont également orientés par lots dans la nature. Pour le traitement itératif comme dans le cas du Machine Learning et de l'analyse interactive, Hadoop/MR ne satisfait pas à l'exigence. ici est un bel article de Cloudera sur Why Spark qui le résume très bien.

Ce n'est pas une fin de MR. Au moment d'écrire ces lignes, Hadoop est bien mature par rapport à Spark et beaucoup de fournisseurs le supportent. Cela changera avec le temps. Cloudera a commencé à inclure Spark in CDH et au fil du temps de plus en plus de fournisseurs l'incluraient dans leur distribution Big Data et fourniraient un support commercial pour cela. Nous verrions MR et Spark en parallèle dans un avenir prévisible.

De plus, avec Hadoop 2 (alias YARN), MR et d'autres modèles (y compris Spark) peuvent être exécutés sur un seul cluster. Donc, Hadoop ne va nulle part.

25
Praveen Sripati

Ça dépend de ce que tu veux faire.

La plus grande force de MapReduce est le traitement de nombreux fichiers texte volumineux. L'implémentation de Hadoop est construite autour du traitement des chaînes et est très lourde en E/S.

Le problème avec MapReduce est que les gens voient le marteau de parallélisme facile et que tout commence à ressembler à un clou. Malheureusement, les performances de Hadoop pour autre chose que le traitement de gros fichiers texte sont terribles. Si vous écrivez un code parallèle décent, vous pouvez souvent le terminer avant que Hadoop ne lance même sa première machine virtuelle. J'ai vu des différences de 100x dans mes propres codes.

Spark élimine beaucoup de frais généraux de Hadoop, tels que la dépendance aux E/S pour TOUT. Au lieu de cela, il garde tout en mémoire. Génial si vous avez assez de mémoire, pas génial si vous n'en avez pas.

N'oubliez pas que Spark est une extension de Hadoop, pas un remplacement. Si vous utilisez Hadoop pour traiter les journaux, Spark n'aidera probablement pas. Si vous en avez plus) des problèmes complexes, peut-être étroitement liés, alors Spark aiderait beaucoup. De plus, vous aimerez peut-être l'interface de Spark Scala pour les calculs en ligne).

33
Adam