Apache Spark vs Apache MapReduce | OTUS

Apache Spark vs Apache MapReduce

Как известно, еще не так давно при обработке больших данных активно применялся MapReduce -- Hadoop-компонент, положивший начало Big Data-обработке. Однако сегодня можно сказать, что у этого инструмента есть 2 основные проблемы:

1-1801-003e3a.png

  1. Невысокая производительность. Модель MapReduce выполняет вычисления за 2 этапа. В первую очередь он разделяет данные на части, передавая их на кластерные узлы для обработки. Потом каждый узел производит обработку данных с отправкой результата на главный узел, где и сформировывается итоговый результат распределенных вычислений. При этом MapReduce регулярно обращается к диску, ведь именно там он сохраняет промежуточные и финальные итоги вычислений. Таким образом, модель функционирует с задержками, причем эти задержки ограничивают применение MapReduce в целях обработки потоковых данных и решения Machine learning-задач.
  2. Повышенная сложность. Для написания хорошего решения на MapReduce понадобится довольно высокий уровень экспертности. На практике даже относительно опытный инженер может легко допустить ошибку либо написать неэффективный алгоритм.

mapreduce_vs_spark_1-1801-af02c2.png

И вот пришел Spark...

Но, как мы знаем, в 2014 появился фреймворк Spark. Он быстро стал завоевывать популярность, причем сегодня он почти вытеснил MapReduce. Собственно говоря, он и разрабатывался в целях устранения недостатков MapReduce, но, что очень важно, с сохранением преимуществ предшественника. Давайте посмотрим, каким образом Apache Spark решает проблемы MapReduce:

  1. Spark выполняет обработку данных в памяти и, по сути, почти не обращается к диску. А при возникновении ситуации, когда объем обрабатываемых данных превышает объем RAM, Spark просто сбрасывает часть обрабатываемых данных на диск. Причем во фреймворк включены различные оптимизаторы, позволяющие сокращать количество обращений к диску. Именно поэтому Spark и быстрее MapReduce в десятки раз (а иногда и в сотни!)
  2. В Spark существует API для различных языков программирования, в результате чего писать код заметно проще, да и сам программный код более компактен. Как правило, разработчики пишут на Spark относительно высокоуровневые инструкции, а уже то, как оптимальнее их выполнить, решает он сам, причем нередко он способен выполнить эту задачу лучше человека.

К примеру, тому же Junior Data-engineer'y вполне по силам написать код на Spark, который станет работать быстрее, чем программный код, написанный более опытным Senior Data-engineer'ом на MapReduce. Кроме того, что немаловажно, на Spark у вас будет меньше шансов совершить серьезную ошибку. Собственно говоря, даже если вы и допустите ошибку, то исправить ее тоже будет легче.

apache_e1443437347447_1-1801-0aeec3.png

Вывод прост

Если подвести некую черту, то можно с уверенностью сказать, что на момент написания материала Hadoop MapReduce является устаревающей технологией, в то время как Apache Spark фактически стал сегодня стандартом в области обработки Big Data.

b4ffc60c20e23e7e665feaf2e3584fb9_1-1801-6e4b43.jpg

По материалам https://mcs.mail.ru/blog/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться