Алёна Лазарева, редактор-фрилансер, специально для блога Нетологии написала обзорную статью об одном из популярных инструментов специалиста по 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-комьюнити и большое количество информации о нем в открытом доступе. Из очевидных минусов — задержка обработки данных больше, чем у фреймворков с потоковой моделью.
Поделиться с друзьями
-->

Комментарии (4)


  1. nehaev
    27.06.2017 13:46
    +3

    Спарк существует и используется в индустрии уже довольно давно, поэтому сомневаюсь, что настолько высокоуровневый обзор спарка сегодня кому-то интересен. Но это ладно. Все впечатление портит сравнительная таблица (последняя картинка). Это просто халтура. Вот что сразу бросается в глаза:


    1. Что такое "Абстракция данных" и почему у спарка это DStream?
    2. Что за новый язык программирования "Clothure"?
    3. Почему "Вероятность дубликации данных" измеряется не от 0 до 1, а как "да/нет"?
    4. Что значит "Задержка обработки" и как она измерялась?
    5. "Проходимость" — страшно подумать, каким надмозгом это переводилось...
    6. "Готовности продукта" — почему во множественном числе? Опять же интересно, как эти "готовности" измерялись...


    1. blognetology
      27.06.2017 19:11
      -1

      Спасибо за замечания, внесли некоторые изменения в таблицу.


  1. Sonorx
    27.06.2017 15:05
    -1

    Неплохая обзорная статья, особенно спасибо за собранные сведенья в таблице по сравнению фреймворков, очень полезная информация. Вот правда таблица во вступлении непонятно как относиться к остальной статье.


  1. sshikov
    27.06.2017 21:15

    Открываем родной сайт спарка, и читаем первый же абзац, где написано буквально следующее:

    У авторов:
    >Run programs up to 100x faster than Hadoop MapReduce in memory, or 10x faster on disk.

    У вас:
    >Hadoop сохраняет данные на жесткий диск на каждом шаге алгоритма MapReduce, а Spark производит все операции в оперативной памяти.

    И уверяю вас, это далеко не единственный перл.