Подтвердить что ты не робот

MapReduce или Spark?

Я проверил hadoop и mapreduce с cloudera, и я нашел это довольно круто, я думал, что я был самым последним и актуальным решением BigData. Но несколько дней назад я нашел это: https://spark.incubator.apache.org/

A "Быстродействующая кластерная вычислительная система", способная работать на вершине кластера Hadoop и, по-видимому, способная раздавить mapreduce. Я видел, что он работал больше в RAM, чем в mapreduce. Я думаю, что mapreduce по-прежнему актуально, когда вам приходится выполнять кластерные вычисления, чтобы преодолеть проблемы ввода-вывода, которые могут возникнуть на одной машине. Но поскольку Spark может выполнять задания, которые делают mapreduce, и может быть более эффективным для нескольких операций, разве это не конец MapReduce? Или есть что-то большее, что может сделать MapReduce, или может MapReduce быть более эффективным, чем Spark в определенном контексте?

4b9b3361

Ответ 1

MapReduce носит пакетный характер. Таким образом, любые структуры поверх реализаций MR, такие как Hive and Pig, также ориентированы на пакет. Для итеративной обработки, как в случае машинного обучения и интерактивного анализа, Hadoop/MR не отвечает требованиям. Здесь - хорошая статья от Cloudera на Why Spark, которая суммирует ее очень хорошо.

Это не конец МР. На момент написания этой статьи Hadoop очень зрелый по сравнению с Spark, и многие продавцы его поддерживают. Он со временем изменится. Cloudera начал включать Spark в CDH, и со временем все больше и больше поставщиков будут включать его в свой дистрибутив Big Data и предоставляют коммерческую поддержку для него. Мы увидим MR и Spark параллельно в обозримом будущем.

Также с Hadoop 2 (aka YARN), MR и другими моделями (включая Spark) можно запускать на одном кластере. Итак, Hadoop никуда не денется.

Ответ 2

Зависит от того, что вы хотите сделать.

MapReduce наибольшая сила обработки много больших текстовых файлов. Реализация Hadoop построена вокруг строковой обработки, и это очень тяжело в/в.

Проблема с MapReduce заключается в том, что люди видят легкий молот parallelism, и все начинает выглядеть как гвоздь. К сожалению, производительность Hadoop для чего угодно, кроме обработки больших текстовых файлов, ужасна. Если вы пишете достойный параллельный код, вы часто можете завершить его до того, как Hadoop даже запустит свою первую виртуальную машину. Я видел различия в 100x в моих собственных кодах.

Spark устраняет множество накладных расходов Hadoop, таких как зависимость от ввода-вывода для ВСЕГО. Вместо этого он хранит все в памяти. Отлично, если у вас достаточно памяти, не так здорово, если вы этого не сделаете.

Помните, что Spark является расширением Hadoop, а не заменой. Если вы используете Hadoop для обработки журналов, Spark, вероятно, не поможет. Если у вас есть более сложные, возможно жестко связанные проблемы, то Spark поможет много. Кроме того, вам может понадобиться интерфейс Spark Scala для онлайновых вычислений.