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