Apache Spark: из open source в индустрию

Алёна Лазарева, редактор-фрилансер, специально для блога Нетологии написала обзорную статью об одном из популярных инструментов специалиста по Big Data — фреймворке Apache Spark.

Люди часто не догадываются о том, как Big Data влияет на их жизнь. Но каждый человек — источник больших данных. Специалисты по Big Data собирают и анализируют цифровые следы: лайки, комментарии, просмотры видео на Youtube, данные GPS с наших смартфонов, финансовые транзакции, поведение на сайтах и многое другое. Их не интересует каждый человек, их интересуют закономерности.

Понимание этих закономерностей помогает оптимизировать рекламные кампании, предсказать потребность клиента в продукте или услуге, оценить настроение пользователей.

Согласно опросам и исследованиям, Big Data чаще всего внедряют в областях маркетинга и ИТ, и только после этого идут исследования, прямые продажи, логистика, финансы и так далее.

Для работы с большими данными были разработаны специальные инструменты. Наиболее популярный на сегодняшний день — Apache Spark.

Что такое Apache Spark

Apache Spark — это фреймворк с открытым исходным кодом для параллельной обработки и анализа слабоструктурированных данных в оперативной памяти.

Главные преимущества Spark — производительность, удобный программный интерфейс с неявной параллелизацией и отказоустойчивостью. Spark поддерживает четыре языка: Scala, Java, Python и R.

Фреймворк состоит из пяти компонентов: ядра и четырех библиотек, каждая из которых решает определенную задачу.

Spark Core — основа фреймворка. Оно обеспечивает распределенную диспетчеризацию, планирование и базовые функции ввода-вывода.

Spark SQL — одна из четырех библиотек фреймворка для структурированной обработки данных. Она использует структуру данных, называемую DataFrames и может выступать в роли распределенного механизма запросов SQL. Это позволяет выполнять запросы Hadoop Hive до 100 раз быстрее.

Spark Streaming — простой в использовании инструмент для обработки потоковых данных. Несмотря на название, Spark Streaming не обрабатывает данные в реальном времени, а делает это в режиме micro-batch. Создатели Spark утверждают, что производительность от этого страдает несильно, поскольку минимальное время обработки каждого micro-batch 0,5 секунды.

Библиотека позволяет использовать код приложений batch-анализа для потоковой аналитики, что облегчает реализацию -архитектуры.

Spark Streaming легко интегрируется с широким спектром популярных источников данных: HDFS, Flume, Kafka, ZeroMQ, Kinesis и Twitter.

MLlib — это распределенная система машинного обучения с высокой скоростью. Она в 9 быстрее своего конкурента — библиотеки Apache Mahout при тестировании бенчмарками на алгоритме чередующихся наименьших квадратов (ALS).

MLlib включает в себя популярные алгоритмы:

  • классификация,
  • регрессия,
  • деревья принятия решений,
  • рекомендация,
  • кластеризация,
  • тематическое моделирование.

GraphX — это библиотека для масштабируемой обработки графовых данных. GraphX не подходит для графов, которые изменяются транзакционным методом: например, базы данных.

Spark работает:

  • в среде кластеров Hadoop на YARN,
  • под управлением Mesos,
  • в облаке на AWS или других облачных сервисах,
  • полностью автономно.

Он же поддерживает несколько распределенных систем хранения:

  • HDFS,
  • OpenStack Swift,
  • NoSQL-СУБД,
  • Cassandra,
  • Amazon S3,
  • Kudu,
  • MapR-FS.

Как появился

Первым фреймворком для работы с Big Data был Apache Hadoop, реализованный на базе технологии MapReduce.

В 2009 году группа аспирантов из Калифорнийского университета Беркли разработала систему управления кластером с открытым исходным кодом — Mesos. Чтобы показать все возможности своего продукта и то, как легко управлять фреймворком на базе Mesos, всё та же группа аспирантов начала работу над Spark.

По задумке создателей, Spark должен был стать не просто альтернативой Hadoop, но и превзойти его.

Основное различие двух фреймворков — способ обращения к данным. Hadoop сохраняет данные на жесткий диск на каждом шаге алгоритма MapReduce, а Spark производит все операции в оперативной памяти. Благодаря этому Spark выигрывает в производительности до 100 раз и позволяет обрабатывать данные в потоке.

В 2010 году проект был опубликован под лицензией BSD, а в 2013 году перешел под лицензию Apache Software Foundation, который спонсирует и разрабатывает перспективные проекты. Mesos также привлек внимание Apache и перешел под его лицензию, но не стал таким же популярным, как Spark.

Как используется

По результатам опроса, который фонд Apache провел в 2016 году, более 1000 компаний используют Spark. Его применяют не только в маркетинге. Вот часть задач, которые компании решают при помощи Spark.

  • Страховые компании оптимизируют процесс возмещения претензий.
  • Поисковики выявляют фейковые аккаунты в социальных сетях и улучшают таргетинг.
  • Банки прогнозируют востребованность определенных банковских услуг у своих клиентов.
  • Службы такси анализируют время и геолокацию, чтобы спрогнозировать спрос и цены.
  • Twitter анализирует большие объемы твитов, чтобы определить настроение пользователей и отношение к продукту или компании.
  • Авиакомпании строят модели для прогнозирования задержек рейсов.
  • Ученые анализируют погодные катаклизмы и предсказывают их появление в будущем.

Альтернативы

С развитием потребности к сбору, анализу и обработке больших данных появляются новые фреймворки. Некоторые большие корпорации разрабатывают собственный продукт с учетом внутренних задач и потребностей. Например, так появился Beam от Google и Kinesis от Amazon. Если говорить о фреймворках, популярных среди широкого круга пользователей, то кроме уже упомянутого Hadoop можно назвать Apache Flink, Apache Storm и Apache Samza.

Мы сравнили четыре фреймворка под лицензией Apache по ключевым показателям:

Каждый фреймворк имеет свои слабые и сильные стороны. Пока ни один из них не является универсальным и не может заменить остальные. Поэтому при работе с большими данными компании выбирают тот фреймворк, который лучше всего подходит для решения конкретной задачи. Некоторые компании одновременно используют несколько фреймворков, например, TripAdvisor и Groupon.

Подводя итог

Apache Spark — самый популярный и быстроразвивающийся фреймворк для работы с Big Data. Хорошие технические параметры и четыре дополнительных библиотеки позволяют использовать Spark для решения широкого круга задач.

Из неочевидных плюсов фреймворка — многочисленное Spark-комьюнити и большое количество информации о нем в открытом доступе. Из очевидных минусов — задержка обработки данных больше, чем у фреймворков с потоковой моделью.

Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации.

Полный текст статьи читайте на Нетология