Spark и его значение для IT

1 март, 2016 - 15:29Александр Черников

Apache Spark, возможно, самая «горячая» технология 2016 г. И, возможно, она значительнее, чем любая другая в области работы с большими данными. Больше тысячи энтузиастов писали код для этого open source проекта, и почти каждый Big Data провайдер принял его, − хотя проекту менее двух лет.

IBM просто сказала, что обучит работать со Spark один миллион специалистов направления data scientists и data engineers, а компания Databricks (ее основатели стояли у истоков Spark) уже обучила 20 тыс. человек.

 Spark и его значение для IT

16-18 февраля 2016 г. около 1 200 «ранних энтузиастов» (early adopters) собрались в Нью-Йорке на встречу Spark Summit East. Зрелой и солидной конференцией это мероприятие назвать вряд ли будет правильным. Это была скорее возможность для участников учиться друг у друга, − и в том числе непосредственно у Матфея Захарии (Matei Zaharia), который и создал Spark, будучи еще студентом Калифорнийского университета в Беркли.

 Spark и его значение для IT

Матфей Захария родился 21 апреля 1985 г. в Румынии и позже переехал в Канаду. Он сооснователь и CTO компании Databricks и профессор-ассистент в MIT со степенью PhD, которую получил за проект Apache Mesos.
Тем не менее, многие IT-специалисты (и еще больше людей бизнеса), когда разговор заходит об этой новой технологии, до сих пор первым делом задают один и тот же вопрос: «Так что же такое, все-таки, Spark?». Давайте и мы начнем с ответов на него, которые дали на конференции сведущие в данном вопросе руководители компаний и разработчики.

Что такое Spark?

Вот как отвечает Питер Шламп (Peter Schlampp), вице-президент по Big Data Discovery Platform компании Platfora: «Apache Spark − быстро развивающийся open source движок для крупномасштабной обработки данных и их аналитики (large-scale data processing and analytics)».

Компании, которые ориентируются на Hadoop, нуждаются в различных аналитических инструментах для предварительной подготовки данных (data preparation) и описательного анализа (descriptive analysis). Им также нужны средства поиска и более продвинутые технологии, − такие, как машинное обучение (machine learning) и обработка графов (graph processing).

Компаниям также нужны соответствующие инструменты, которые позволили бы им приобрести новые навыки и шире использовать имеющиеся ресурсы. До настоящего времени единой структуры обработки данных (data processing framework), которая соответствует всем этим критериям, не было. Это − фундаментальное преимущество Spark».

Почему Spark называют «новой грандиозной вещью»? Крупнейшая National Broadcasting Company (NBC) использует его, чтобы исследовать офлайн-контент. Toyota − чтобы улучшить качество обслуживания клиентов, Airbnb − чтобы предсказать запросы клиентов. Spark также имеет потенциал для выявления и поимки киберпреступников в режиме реального времени. Он может даже устранить буферизацию на вашем экране, когда вы принимаете потоковое видео, − и еще много чего.

Идеологи и руководители направлений Spark различных компаний на конференции ответили на вопрос ресурса CMSWire − «Why does Spark matter?» следующим образом.

Грант Ингерсол (Grant Ingersoll), CTO, Lucidworks


Когда объемы данных быстро растут, у разработчиков обязательно должны быть средства создания приложений, которые соответствуют этому росту. Spark облегчает их работу, упрощая программную модель, которая в распределенных приложениях самостоятельно заботится о большом количестве вещей, которые могут пойти не так, как надо.
 
Кавита Марьяпан (Kavitha Mariappan), VP маркетинг, Databricks

Spark позволяет предприятиям обрабатывать большие объемы данных быстрее, чем когда-либо. Он резко упрощает IT-инфраструктуру, устраняя необходимость как-то интегрировать несоизмеримый набор сложных инструментов.

Spark − унифицированная платформа, которая поддерживает потоки данных (streaming), интерактивную аналитику и сложную обработку данных. Это происходит быстро, поскольку данные обрабатываются непосредственно в оперативной памяти. Оптимизация Spark, однако, простирается и вне памяти.
 
Скотт Гно (Scott Gnau), CTO, Hortonworks

Spark объединяет SQL, потоковую и сложную аналитику, что обеспечивает хорошую совместимость в различных технологических областях. Это − главное преимущество для аналитики данных, получаемых из разнородных источников. Вычисления in-memory дают возможность быстрого построения итеративных моделей, а обучение машины обеспечивает сложную адаптивную обработку данных, в том числе в потоковом режиме.

Питер Милн (Peter Milne), Senior Sales Architect, Aerospike

Аналитика больших данных, собственно, заключается в выделении сигнала из шума и поиске заданных образцов в больших массивах данных. Spark − аналитический движок с массовым параллелизмом (massively parallel analytics engine), с очень хорошими встроенными средствами machine learning. Это позволяет извлекать уроки из каждого сеанса обработки данных и делать предсказания в дальнейшем. Обработка графов используется, например, для целевой рекламы и в социальных сетях.
 
Джим Скотт (Jim Scott), Director, Enterprise Strategy and Architecture, MapR

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

У Spark есть множество параметров, которые задают его конфигурацию под задачи пользователя. Лучше всего здесь подойдет, пожалуй, следующая аналогия. Spark походит на реактивный истребитель, который вы должны построить сами. Но главное заключается в том, что после того, как вы его построите, то неизбежно получите действительно довольно классную машину. Единственное, чему еще придется научится, − точной настройке вашей уникальной Spark-конфигурации, − примерно так же, как управлять вашим построенным истребителем.

Ник Холси (Nick Halsey), CMO, Zoomdata

Spark - критический компонент для построения приложений, работающих в реальном времени, и потоковой аналитики (real-time and streaming analytic applications). Spark представляет собой программный слой, располагающийся между источником данных и конечной визуализацией для высокоэффективной аналитики.

Питер Шламп (Peter Schlampp), VP Products, Platfora

1. Spark служит основой для реализации продвинутой аналитики «прямо из коробки». Эта структура (framework) включает инструмент для ускорения выполнения запросов, библиотеку машинного обучения, движок-процессор для обработки графов и движок для потоковой аналитики.

2. Spark делает все проще. Вместо того, чтобы требовать от пользователей свободного владения несколькими сложными навыками (например, программированием в Java и MapReduce), для Spark достаточно понимать принципы баз данных и иметь навыки работы со скриптовыми языками (типично Python или Scala).

3. Spark ускоряет получение результатов. Это обеспечивается параллельной обработкой в памяти, которая возвращает результаты во много раз быстрее, чем какой-либо другой подход, требующий дискового доступа. Мгновенные результаты устраняют задержки, которые характерны при принятии решений в бизнес-процессах с использованием традиционных средств аналитики.

4. Spark не заботится о том, где и как вы храните свои данные. Все варианты Hadoop и облачные сервисы сегодня поддерживают Spark. Кроме того, Spark − решение, не зависящее от того, кто его поставляет (vendor-neutral solution). Таким образом, его внедрение не привязывает пользователя ни к какому определенному поставщику. Поскольку Spark − это open source система, разработчики вольны создавать собственную аналитическую инфраструктуру на основе Spark.

Гэри Оренштейн (Gary Orenstein), CMO, MemSQL

Spark решает много проблем обработки данных в единой и единственной системе. И он делает это быстро за счет архитектуры, оптимизированной под непосредственную обработку in-memory. Вместе с тем, он не делает «все на свете». У Spark, например, нет собственной модели хранения данных, но благодаря потоковой обработке данных, машинному обучению и расширенной аналитике Spark дает пользователю необходимые результаты.

Заключение

Итак, Spark − это инструментальный программный комплекс, который «оказался в нужном месте в нужное время», что и обусловливает его популярность и быстрое дальнейшее развитие. Второй день Spark Summit East начался презентацией Матфея Захарии «Spark 2.0». В этой версии к нему добавился добрый десяток компонентов, а скорость обработки данных, как показано на рисунке, выросла едва ли не на порядок (полную презентацию можно посмотреть здесь).

 Spark и его значение для IT

На указанном в начале блога сайте конференции для большинства сделанных на саммите презентаций есть доступные для скачивания pdf-версии.

Следующий, более практический шаг в изучении этого программного комплекса (с примерами кода) желающие могут сделать, например, по статье «Знакомство с Apache Spark».