Apache Spark против Hadoop Mapreduce — что вам нужно знать
Опубликовано: 2019-09-05Большие данные — это вездесущий Большой Брат в современном мире. Постоянно растущие варианты использования больших данных в различных отраслях привели к появлению множества технологий больших данных, наиболее популярными из которых являются Hadoop MapReduce и Apache Spark. Хотя и MapReduce, и Spark являются флагманскими проектами с открытым исходным кодом, разработанными Apache Software Foundation, они также являются сильнейшими конкурентами друг друга.
В этом посте мы сначала поговорим о фреймворках MapReduce и Spark, затем перейдем к обсуждению ключевых различий между ними.
Что такое Spark и MapReduce?
Spark — это платформа для работы с большими данными, специально разработанная для обеспечения быстрых вычислений. Он служит механизмом обработки данных общего назначения, который может обрабатывать различные рабочие нагрузки, включая пакетные, интерактивные, итеративные и потоковые. Ключевой особенностью Spark является скорость — он выполняет вычисления в памяти для увеличения скорости обработки данных. В результате он хорошо работает на кластере компьютерных узлов и позволяет быстрее обрабатывать большие наборы данных.
Устойчивый распределенный набор данных (RDD) — это основная структура данных Spark. RDD — это неизменяемая распределенная коллекция объектов, в которой каждый узел разделен на более мелкие фрагменты, которые можно вычислять на разных узлах кластера. Это облегчает независимую обработку данных внутри кластера.
MapReduce — это платформа с открытым исходным кодом, предназначенная для обработки огромных объемов данных в параллельной и распределенной среде. Он может обрабатывать данные только в пакетном режиме. Есть два основных компонента Hadoop MapReduce — HDFS и YARN.

Программирование MapReduce состоит из двух частей — Mapper и Reducer. В то время как Mapper выполняет задачу сортировки данных, Reducer объединяет отсортированные данные и преобразует их в более мелкие фрагменты.
Что касается принципиальной разницы между этими двумя фреймворками, то это их врожденный подход к обработке данных. В то время как MapReduce обрабатывает данные путем чтения и записи на диск, Spark может делать это в памяти. Таким образом, Spark получает преимущество перед MapReduce — скорость обработки.
Но значит ли это, что Spark лучше, чем MapReduce? К сожалению, дискуссия не так проста. Чтобы пролить больше света на этот вопрос, мы разберем различия между ними по пунктам.
Обработка данных
Spark : как мы упоминали ранее, Spark — это скорее гибридная платформа обработки общего назначения. Благодаря вычислениям в памяти и оптимизации обработки он ускоряет обработку данных в режиме реального времени. Он отлично подходит для потоковой передачи рабочих нагрузок, выполнения интерактивных запросов и алгоритмов машинного обучения. Однако RDD позволяет Spark только временно хранить данные на диске, записывая на диск только жизненно важные данные. Таким образом, он загружает процесс в память и сохраняет его в кеше. Это делает Spark очень требовательным к памяти.
MapReduce : MapReduce — это собственный механизм пакетной обработки Hadoop. Его компоненты (HDFS и YARN) обеспечивают более плавную обработку пакетных данных. Однако, поскольку обработка данных происходит в несколько последовательных шагов, процесс достаточно медленный. Преимущество MapReduce в том, что он допускает постоянное хранение — он хранит данные на диске. Это делает его пригодным для обработки массивных наборов данных. Как только задача завершена, MapReduce завершает свои процессы и, следовательно, может работать одновременно с другими службами.
Простота использования
Spark : Когда дело доходит до простоты использования, Spark берет верх. Он поставляется с множеством удобных API для Scala (родной язык), Java, Python и Spark SQL. Поскольку Spark позволяет выполнять потоковую передачу, пакетную обработку и машинное обучение в одном кластере, вы можете легко упростить инфраструктуру обработки данных в соответствии со своими потребностями. Кроме того, Spark включает интерактивный режим REPL (цикл чтения-оценки-печати) для запуска команд, который обеспечивает оперативную обратную связь с пользователями.
MapReduce : Поскольку Hadoop MapReduce написан на Java, изучение синтаксиса требует времени. Следовательно, поначалу многим может показаться, что программировать довольно сложно. Хотя в MapReduce отсутствует интерактивный режим, такие инструменты, как Pig и Hive, немного упрощают работу с ним. Существуют и другие инструменты (например, Xplenty), которые могут выполнять задачи MapReduce без какого-либо программирования.

Отказоустойчивость
Spark : Spark использует RDD и различные модели хранения данных для обеспечения отказоустойчивости за счет сокращения сетевых операций ввода-вывода. В случае потери раздела RDD, RDD восстановит этот раздел из информации, хранящейся в памяти. Таким образом, если процесс падает на полпути, Spark придется начать обработку с самого начала.
MapReduce : в отличие от Spark, MapReduce использует концепцию репликации для обеспечения отказоустойчивости через Node Manager и ResourceManager. Здесь, если процесс не выполняется на полпути, MapReduce продолжится с того места, где он остановился, тем самым экономя время.
Безопасность
Spark : Поскольку Spark все еще находится в зачаточном состоянии, его фактор безопасности не очень развит. Он поддерживает аутентификацию через лист общего секрета (аутентификация по паролю). Что касается веб-интерфейса, его можно защитить с помощью фильтров сервлетов javax. Функции Spark YARN и HDFS обеспечивают аутентификацию Kerberos, разрешения на уровне файлов HDFS и шифрование между узлами.
MapReduce : MapReduce гораздо более развит и, следовательно, имеет лучшие функции безопасности, чем Spark. Он обладает всеми преимуществами безопасности Hadoop и может быть интегрирован с проектами безопасности Hadoop, включая Knox Gateway и Sentry. Через действующих сторонних поставщиков организации могут даже использовать Active Directory Kerberos и LDAP для аутентификации.
Расходы
Хотя и Spark, и MapReduce являются проектами с открытым исходным кодом, существуют определенные затраты, которые вы должны понести для обоих. Например, Spark требовал больших объемов оперативной памяти для выполнения задач в памяти, а оперативная память стоит дороже, чем жесткие диски. Напротив, Hadoop ориентирован на диски — хотя вам не нужно будет покупать дорогую оперативную память, вам придется вкладывать больше средств в системы для распределения дискового ввода-вывода между несколькими системами.
Итак, что касается стоимости, то она во многом зависит от требований организации. Если организации необходимо обрабатывать большие объемы больших данных, Hadoop будет экономически выгодным вариантом, поскольку покупка места на жестком диске намного дешевле, чем покупка большого объема памяти. Более того, MapReduce поставляется с множеством предложений Hadoop как услуга и услуг на основе Hadoop, которые позволяют вам избежать требований к оборудованию и персоналу. По сравнению с этим существует лишь несколько вариантов Spark как услуги.

Совместимость
Что касается совместимости, то и Spark, и MapReduce совместимы друг с другом. Spark можно легко интегрировать со всеми источниками данных и форматами файлов, поддерживаемыми Hadoop. Кроме того, оба являются масштабируемыми. Таким образом, совместимость Spark с типами данных и источниками данных почти такая же, как и у Hadoop MapReduce.
Как видите, и Spark, и MapReduce обладают уникальными функциями, которые отличают их друг от друга. Например, Spark предлагает аналитику в реальном времени, которой нет в MapReduce, тогда как MapReduce поставляется с файловой системой, которой нет в Spark. Оба фреймворка превосходны по-своему, и оба имеют свой уникальный набор преимуществ и недостатков. В конечном счете, спор между Spark и MapReduce сводится к вашим конкретным бизнес-потребностям и задачам, которые вы хотите выполнить.
Если вам интересно узнать больше о больших данных, ознакомьтесь с нашей программой PG Diploma в области разработки программного обеспечения со специализацией в области больших данных, которая предназначена для работающих профессионалов и включает более 7 тематических исследований и проектов, охватывает 14 языков и инструментов программирования, практические занятия. семинары, более 400 часов интенсивного обучения и помощь в трудоустройстве в ведущих фирмах.
Изучайте онлайн-курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.
