В июне прошло одно из самых крупных мероприятий мира в сфере big data и data science — Spark Summit 2016 в Сан-Франциско. Конференция собрала две с половиной тысячи человек, включая представителей крупнейших компаний (IBM, Intel, Apple, Netflix, Amazon, Baidu, Yahoo, Cloudera и так далее). Многие из них используют Apache Spark, включая контрибьюторов в open source и вендоров собственных разработок в big data/data science на базе Apache Spark.
Мы в Wrike активно используем Spark для задач аналитики, поэтому не могли упустить возможности из первых рук узнать, что происходит нового на этом рынке. С удовольствием делимся своими наблюдениями.
Schedule, video,slides: https://spark-summit.org/2016/schedule/
Twitter: https://twitter.com/spark_summit/status/741015491045642241
Тренды
Если очень кратко резюмировать то, о чём говорили на конференции, получится примерно следующее:
Был объявлен выход Spark 2.0. Спикеры из DataBricks (организаторы конференции и основные разработчики продукта) рассказали, что нового он в себе несёт. В отдельных докладах раскрывалась подноготная этих изменений — это улучшенный планировщик задач, позволяющий оптимизировать работу кода над DataFrame, даже если код написан не самым лучшим образом, а также новый spark streaming и развитие SparkSQL.
Стриминг. Еще раз подтвердился тренд, что современный бизнес движется в сторону real-time процессов, аналитики, etl и т. д., он становится реактивнее и требует быстрых инструментов.
Всё больше и больше внимания уделяется распределённому машинному обучению: для сложных моделей глубокого обучения необходимо очень много данных. На конференции обсуждалось, как с помощью Spark можно ускорить процесс обучения.
В нескольких докладах затрагивались проблемы облачных провайдеров инфраструктуры для аналитики и машинного обучения — как сделать, чтобы пользователи доверяли облакам, убедились, что это дёшево и надёжно.
Многие докладчики акцентировали внимание на том, что Spark сегодня становится системой, объединяющей огромное количество источников данных. Благодаря этому его часто используют бизнес-аналитики и продукт-аналитики как инструмент etl и отчётности, поэтому сейчас брошены значительные силы на улучшение SparkSQL
И, как это стало принято на больших конференциях, компании мерились вкладом в сообщество и количеством коммитов в Open-Source.
Немного о личных впечатлениях
Были опасения, что из-за большого количества заявленных участников мы столкнемся с толпами у стоек регистрации, однако процесс был отлично продуман и автоматизирован: подходишь к автомату регистрации, вводишь имя и фамилию, после небольшого ожидания выскакивает бейджик участника. У сотрудников саммита можно было взять кармашки и талон на выдачу футболок и других мелочей. В общем, к организации нет никаких претензий — навигация была продумана, информации, что и где сейчас происходит — предостаточн. Толкотня возникла только на обеде в первый день, зато, стоя в очереди, была хорошая возможность пообщаться с другими участниками и обсудить доклады. Разумеется, в любое время на конференции можно было найти кофе-поинты с напитками и снэками.
В перерывах между интересными нам докладами можно было сходить в выставочный зал и изучить продукты, построенные на базе Spark или как-то с ним связанные. Мы с коллегой чисто физически не могли попасть на все доклады. К счастью, видео и презентации всех выступлений есть в свободном доступе.
Несколько слов о выставке. Поразило, насколько сильно развита экосистема и какое количество продуктов для аналитики сейчас есть на рынке. Коммерческие, open source и условно бесплатные решения — на любой вкус.
На выставке были сотрудники компаний, предоставляющих различные системы хранения (обещают прирост производительности доступа к данным), консалтинговые компании (обещают помощь в развёртывании Spark или в применении машинного обучения к бизнесу), провайдеры частных облаков (заточенные под hadoop/spark), различные интеграторы, системы визуализации, графического программирования etl, облачные платформы, библиотеки машинного обучения и даже средства для отладки и профилирования приложений над Spark. Иными словами, целый мир вокруг Spark! Ниже несколько решений, которые особенно привлекли наше внимание.
Интересные решения
MemSQL — масштабируемая база данных в памяти для работы с реляционными объектами — обещали особую эффективность с числовыми данными.
Couchbase — нерялиционная база данных; оказывается, существует enterprise-решение на базе redis-сервера
Библиотека машинного обучения H2O и её связка со Spark.
Конечно, нельзя пройти мимо новинок от DataBricks, Intel и IBM. С первыми всё довольно очевидно, а вот о решении TAP от Intel до этого слышно не было. Облако Bluemix от IBM уже у всех на слуху. На этот раз они активно продвигали девиз “Learn. Create. Collaborate”.
Довольно интересной была презентация системы визуализации ZoomData. Система подключается к огромному количеству источников и может выводить данные в реальном времени. На первый взгляд, решение очень похоже на Tableau с live-соединением, но в деталях ребята подошли по-своему.
Также нам показался интересным продукт от Startio. Это ПО, которое можно скачать и поставить, так что не очень понятна схема монетизации: то ли планируется платная поддержка, то ли есть платные версии платформы с большим количеством фич. Как я понял по описанию, в сразу и бесплатно получаете большую распределённую систему аналитики, с мониторингом, менеджментом и т. д.
Также было интересное выступление сотрудников Mesosphere — они представляли open-source версию DC/OS — “операционной системы” над ДЦ. По сути это Mesos, Zookeeper, Marathon, Сonsul в одном флаконе и с красивыми GUI, который объединяет машины в один пул ресурсов. У них также есть платная enterprise версия — довольно интересный продукт для распределённых вычислений и современных облачных платформ.
А ещё на саммите мы увидели ребят, которые делают суперкомпьютеры Cray и по дефолту предоставляют сервера с установленными решениями для аналитики, в том числе Spark.
Яркие презентации
— Riak TS от Basho NoSQL key-value хранилище, ориентированное на TimeSeries Data формат, обещается resiliency (100% доступность данных), автомасштабирование, data co-location, возможность использования SQL и, в частности, оптимизированных SQL— range запросов, поддержку Java, Python, Node.js и других популярных языков, мультикластер-репликацию и, само собой, коннектор к Apache Spark.
— GridGain (между прочим, наши соотечественники) представляли свои разработки построенные, на собственном open-source решении — Apache Ignite. Если кратко, то это технология из 2-х основных компонент: 1. In-Memory MapReduce и 2.Ignite FileSystem (In-Memory файловая система). Эта штука может быть очень полезна для инфраструктуры, основанной на компонентах hadoop-экосистемы, так как позволяет ускорить вычисления в сотни раз практически без изменения кода, работая с YARN кластер-менеджером и будучи совместимой с HDFS. Другой полезный кейс Apache-Ignite In-Memory Data Fabric — это shared in-memory хранилище, которое позволяет Apache Spark-джобам обмениваться данными также на порядок быстрее.
— Были и забавные проекты, которые обещали нам инструмент для аналитики без написания строчки кода. Проект Seahorse — Visual Spark от компании deepsense.io. Это UI-приложение а-ля Matlab Simulink или LabView — графический инструмент для создания пайплайнов Spark задач из графических блоков.
Также мы услышали призывы использовать Apache Spark в качестве back-end движка для различных веб-сервисов, где есть или ожидается большая нагрузка данными, над которыми нужно будет проделывать аналитическую обработку и использовать результаты — либо как непосредственно при выходе продукта для пользователя, либо в качестве промежуточного слоя для последующих сервисов. Один из таких проектов — Eclair.js. Фактически, это js-обертки над Apache Spark API, позволяющие на JavaScript (NodeJS) создавать пайплайны вычислений, в том числе используя синтаксис js для имплементации мапперов и редьюсеров.
Об архитектуре
Об этом продукте отдельного доклада не было, но Kafka мелькала почти на каждом слайде про стриминг и просто воспринималась как данность. Обычно для стриминга рисуют множество ресурсов, всё это летит в Kafka а оттуда в Spark Streaming, также подсасываются микросервисы или что-то ещё опциональное.
Mesos — удивило огромное количество как коммерческого, так и открытого софта на базе этого кластер-менеджера. Stratio, mesosphere, cray и.т.д — это продукты, которые уже работают, несмотря на то, что сама технология пока выглядит сырой. Многие отмечали, что проблем хватает, но Mesos выглядит очень серьезной заявкой на будущее — это универсальный кластер менеджер, легкий в использовании, развертывании и кастомизации. Доклад на эту тему: https://youtu.be/LG5HE9gI07A
Baidu и Yahoo рассказывали о том, как они строили deep-learning на базе Spark. И везде фигурировал некий сервер параметров, возможно именно этот проект. К примеру, на этом сервере хранились вектора, построенные с помощью word2vec.
Python и Spark
Питон над Spark работает медленно, если вы используете лямбды и объекты питона. Проблема известная, есть несколько путей ее решения — использование только DataFrame API, где, по сути, питон лишь указывает, какие функции надо применить, и применяются java (scala) функции Spark. Но как только вы добавляете лямбда функцию, всё ломается — данные сначала десериализуются Спарком, потом сериализуются, передаются на сторону Питона, он десериализует данные, обрабатывает их, и снова сериализует и передаёт обратно. Проблема в том, что объекты Питона не понимаются Скалой и наоборот. Предлагались различные пути решения: от написаний функций на Scala с последующим вызовом из Python, так и более глубокое встраивание интерпретатора в Spark, например, с использованием Jython. Но самым амбициозным и вкусным выглядит проект Apache Arrow (видео доклада: https://youtu.be/abZ0f5ug18U — по сути, реализовать формат объектов, единый для всех языков — тогда можно без потерь обмениваться данными — удобно и быстро! Верим, ждём и по возможности помогаем!
CTO Databricks и один из создателей Apache Spark — Matei Zaharia рассказывает про новый глобальный релиз
Spark 2.0
В июне обещают выпуск новой версии спарка, которая включает в себя целый ряд улучшений. Это новый планировщик Catalyst, он строит дерево выполнения и старается оптимизировать выполнение: посчитать константы заранее, фильтрацию данных перевести на уровень ниже и выполнить её по возможности до джойнов. Обещается рост производительности чуть ли не на 70%, но не совсем понятно, в каких случаях.
Также представлен новый Streaming API. Многие говорили о том, что etl должен быть приближен к real-time и streaming, и изменения в API — это наболевшее. Теперь работа с потоком данных будет происходить как с бесконечным DataFrame — вы просто читаете stream и делаете стандартные операции, плюс можно написать SQL!
Пример:
St = sqlContext.read.format(‘json’).open(‘<path>’)
было
St = sqlContext.read.format(‘json’).stream(‘<path>’)
стало
И дальше всё как обычно, можно даже использовать SQL. Profit!
В версии 2.0 или 2.1 обещали полную поддержку стандарта SQL 2003. Как уже отмечалось ранее, Spark используется и в классических областях аналитики, поэтому разработчики стараются усилить показатели в SQL интерфейсе.
Видео докладов:
Apache Spark 2.0 — https://youtu.be/fn3WeMZZcCk,
Structuring Spark: Dataframes, Datasets And Streaming — https://youtu.be/1a4pgYzeFwE,
A Deep Dive Into Structured Streaming — https://youtu.be/rl8dIzTpxrI,
Deep Dive Into Catalyst: Apache Spark 2 0'S Optimizer — https://youtu.be/UBeewFjFVnQ
Machine Learning
Хотели бы отметить несколько презентаций по Machine Learning.
MLlib 2.0, в котором появилось persistence API, то есть возможность сохранять обученные модели, написанные на одном языке (например, Python) и использовать их в любом другом, поддерживаемом Apache Spark (например, Java). Примечательно то, что эта же логика работает и для пайплайнов. Без преувеличения, это прорыв, так как шаринг моделей между командами DataScience и девелоперами — одна из самых наболевших тем в индустрии. Также почти все алгоритмы MLlib теперь поддерживают DataFrame-based API.
- Ребята-контрибьюторы ML фреймворка для больших объемов данных H2O рассказали нам про Sparkling Water — инструмент для удобной интеграции фрейморков Apache Spark и H2O. По словам самих девелоперов, они соединили мощь параллельной обработки больших массивов данных и мощный движок для машинного обучения на этих данных. Судя по их презентации, работа с Sparkling Water по логике использования API мало отличается от Spark. Например, обратная конвертация H2OFrame в Spark DataFrame или в RDD вообще не требует дуплицирования данных, а просто создает DataFrame или RDD обертки. Что же касается конвертации RDD/DataFrame в H20, то тут все-таки дупликация данных требуется. В общем итоге H2O и MLlib имеют не пересекающийся функционал, который может быть полезен во многих случаях.
Немного об атмосфере
Когда видишь столько людей, занимающихся большими данными, машинным обучением, аналитикой, наукой, и т.д, это сильно мотивирует, хочется не отставать и идти вперёд. Воздух был пропитан разговорами, что AI — это новое электричество (тут мы отсылаемся к докладу Andrew Ng) и те, кто его не освоят, останутся за бортом как мануфактуры с ручным трудом, что скоро подключить к бизнесу AI будет все равно что воткнуть вилку в розетку, а big data сможет ответить на любые вопросы, а Spark — это краеугольный камень в будущем новых умных систем.
Andrew Ng, всем известный основатель Сoursera, убеждает нас в том, что AI — это новое топливо
Много разговоров было о том, что облако — это быстро и дешево. Так и есть, если ваш бизнес построен на системе рекомендаций, как, скажем, у Netflix. В этом случае вам нужна армия Spark инженеров и облако, где можно развернуть инфраструктуру буквально за часы. Но если вы работаете над исследовательским проектом, и аналитика используется только для внутренних нужд, стоит задуматься. Почти каждый, говорил, что за Спарком будущее, не забывал упомянуть, что у них есть решение, “упрощающее жизнь”. Так что тут важно не попасться на удочку маркетинга, купив ненужное. Но изучать эти области в любом случае нужно!
Что мы вынесли из этого мероприятия
Мы в Wrike на верном пути. Познакомившись с целым рядом успешных больших компаний и поговорив об их аналитической инфраструктуре и технологиях, мы убедились, что во многом применяем те же решения и выбрали верный путь развития.
Spark развивается, развивается активно и в ближайшее время его станет намного проще внедрять в продакшн.
У нас появились ценные контакты людей, которые работают над схожими проблемами. Нетворкинг удался.
Взглянули на рынок предложений в этой области, если что-то не получится собрать самим — знаем, у кого купить.
Немного расширили свои технические компетенции.
Зарядились новыми идеями и планами.
В чём мы прогадали
К подобным событиям надо готовиться и, как минимум, подумать о том, как вы будете обмениваться контактами и.т.д. Мы забыли распечатать визитные карточки, из-за чего приходилось набирать свой email на чужом телефоне, фотографировать бейджики и.т.д.
Не будет лишним заранее посмотреть на выставочные комплексы и определиться с вопросами, возможно, какие-то продукты будут интересны и другим отделам вашей компании. Также, если изучить материалы заранее, можно подготовить вопросы по докладам.
Зачем и кому нужно ехать на саммит
Это отличная возможность взглянуть на рынок big data, построенный вокруг Spark. Если вы подумываете о том, чтобы приобрести какое-то решение — это идеальное место чтобы посмотреть, что есть на рынке, и сравнить.
Вы можете завести полезные связи со Spark-сообществом.
Это отличная возможность поспрашивать, что и как устроено в других компаниях.
В качестве послесловия хочется добавить, что мы лично беседовали с главными контрибьюторами Apache Spark — ребятами из DataBricks. Они презентовали нам инструмент а-ля Jupiter на стероидах для работы с Apache Spark. Это ipython-ноутбуки, которые работают поверх облаков, но имеющие развитую систему мониторинга статуса отдельно выполняющихся ячеек (jobs), продвинутую логику шаринга ноутбуков и учета пользователей. Из той же вкладки можно менять версии спарка / языки / настройки облака (кластера). При этом у продукта DataBricks есть бесплатная Edition-версия. Также ребята планируют сделать кастомизируемый шаринг готовых автообновляемых дашбордов.
Если что-то забыли рассказать, задавайте вопросы, с удовольствием ответим в комментариях.
Комментарии (4)
xhumanoid
04.07.2016 17:54+2а теперь пару других слов:
streaming — как пилили микробатчи, так и будем пилить, ожидать честного стриминга не стоит и «он вам не нужен»
sql — как пилили кастомный Catalyst, так и будем пилить, плевать мы хотели на другие уже существующие и отлаженные инструменты (для примера https://calcite.apache.org/ )
rdd — забили на развитие, используйте dataframe
dataframe — пока юзайте, но учтите, что основные изменения у нас в sql, так что может и вам что от планировщика перепадет, но вообще лучше тоже двигайте в sql, там все оптимизации
и да, dataframe уже в разы быстрее чем rdd для питона, так как имеет схему и гонит данные в лямбды достаточно хорошо, поэтому arrow больше для общения между любыми системами интересно
я не спорю, что спарк развивается, но зачастую шумихи больше чем достиженийAlexPupyshev
05.07.2016 13:02«streaming — как пилили микробатчи, так и будем пилить, ожидать честного стриминга не стоит и «он вам не нужен»»
Очевидно от микробатчей никуда сейчас не деться, но раньше даже с микробатчами работать было не удобно, теперь же у нас появился удобный API (насколько удобный еще только предстоит выяснить), который позволит применять эту технологию чаще.
«rdd — забили на развитие, используйте dataframe»
У вас есть какие-то предложения по их развитию? Кажется, что кроме багофиксов, доп-оптимизаций и небольших изменений в api-для основных языков там больше ничего глобального не сделать.
«dataframe — пока юзайте, но учтите, что основные изменения у нас в sql, так что может и вам что от планировщика перепадет, но вообще лучше тоже двигайте в sql, там все оптимизации»
Хм, в презентациях посвящённых Catalyst использовался, вполне себе dataframe-api и не было sql. Ну и потом, они же взаимозаменяемы и оптимизация будет одинаковой, если посмотреть доклад про внутреннее устройство оптимизатора тут, то становится понятно что нет разницы между SparkSql, DataFrame-api, ну и DataSet-там тоже перепадёт.xhumanoid
05.07.2016 13:46>> Очевидно от микробатчей никуда сейчас не деться
да, немного улучшили, но главная позиция именно в «вам честный стриминг не нужен» и как результат мы имеем
http://beam.incubator.apache.org/capability-matrix/
причем для 2.0 спарка почти ничего не меняется
>> У вас есть какие-то предложения по их развитию
как минимум были предложения по https://github.com/amplab/spark-indexedrdd и которые местами мне интересны, в качестве быстрого распределенного хранилища, без необходимости тянуть сбоку imdb + получаем и локальность вычислений
>> Хм, в презентациях посвящённых Catalyst использовался, вполне себе dataframe-api и не было sql. Ну и потом, они же взаимозаменяемы и оптимизация будет одинаковой
не могут быть они полностью взаимозаменяемые, так как в dataframe как и у rdd хватает терминальных операций, а sql может состоять из нескольких слоев и проще выполнять push down для предикатов. с sql у нас на руках весь план запросов имеется. хотя для простых запросов действительно функционально одинаковы sql vs dataframe.
p.s. и самый простой вопрос который мне нравится к спарку: данные у меня приходят пускай и условно равномерно, но бывают всплески, как мне гарантировать что в какой-то момент я не захлебнусь? у того же beam/dataflow для окна есть тригеры по объему, что мне делать в этом случае со спарком, который не позволяет управлять размером очередного батча
vdmitriyev
Спасибо за описанный опыт посещения саммита. Я бы еще отдельно отметил демо сессию в рамках доклада Apache Spark 2.0, которая начинается на видео примерно с 17:45 минуты.