Мне очень понравился Spark Summit в Сан-Франциско за последние пару дней. Я многому научился и обнаружил, что уровень презентаций довольно высок.

Ниже приведены наблюдения довольно опытного предпринимателя-разработчика программного обеспечения, который рассматривает Spark как фундаментальную часть экосистемы машинного обучения, которая, как я считаю, становится не менее важной, чем «инфраструктура» раньше, и как начинающий пользователь, который просто хочет делать удивительные вещи проще и быстрее. Как и в моих предыдущих блогах, я хочу оставить хлебные крошки, когда перейду от основателя и предпринимателя к советнику, инвестору-ангелу и члену совета директоров (по крайней мере, пока я снова не стану основателем).

Сообщество:

Сначала пара мыслей о сообществе Spark:

  • Посещаемость здесь, кажется, быстро растет: в этом году она составила 2500 человек, а в прошлом году — примерно вдвое меньше.
  • Сегодня утром DataBricks объявила о бесплатном уровне Community Edition, который является облачным выпуском. С этим DataBricks есть как бесплатная пробная версия, так и бесплатная постоянная версия — Community Edition. Это шаблон, который я использовал дважды, и он имеет для меня массу смысла: https://databricks.com/try-databricks
  • Community Edition использует ноутбуки, чтобы уменьшить входной барьер пользователя. Один быстрый комментарий: может быть полезно посмотреть, как вы управляете своими блокнотами и управляются ли они благодаря метаданным и т. д. Подробнее об этом ниже.
  • Участники экосистемы. Кажется, что управление идет хорошо. Меня беспокоит огромный рост участия IBM, Microsoft и других компаний, поскольку я на собственном опыте убедился, что может случиться, когда гигантские унаследованные компании вовлекаются в проект в OpenStack; однако до сих пор я слышал, что в дискуссиях побеждают заслуги. Было приятно услышать, как Дуг Каттинг, один из основателей Cloudera, заявил в своем программном выступлении, что теперь они считают, что Spark вытеснил Map Reduce — это показывает, в каких проектах интеллектуальной честности нуждаются.

Случаи применения:

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

Ник Хьюдекер из Gartner предположил, что интеграция данных и ETL являются ведущими вариантами использования. Например, Джонатан Фарланд из глобальной энергетической консалтинговой компании DNV GL сказал, что Spark помог им сократить определенный процесс ETL с 24 часов до 9 секунд. Излишне говорить, что было много разговоров и о гораздо более привлекательных вариантах использования машинного обучения; плюс IBM — по-видимому, ведущий участник SparkSQL — и другие подчеркивали важность возможности использовать SQL в существующих приложениях, что, на мой взгляд, является отличным моментом.

Простота использования:

Хотя простота использования вызывает беспокойство, стоит отметить, что вы вполне можете использовать Spark под машинным обучением, если вы используете возможности ML, такие как анализ тональности или тональности от Watson или Google Compute Engine или что-то еще. Как отметил Ник Хьюдекер из Garter, только IBM внедрила Spark примерно в 26 приложений. Когда встроенный Spark прост в использовании — вы даже не осознаете, что используете его.

Однако как насчет простоты использования Spark, когда вы управляете им самостоятельно? Что значит для предприятия перейти от необработанных данных к пониманию потока данных? В бесчисленных презентациях указывалось, что на каждом этапе остается неэффективность и операционные проблемы. Опять же — это может и должен быть сам блог.

IBM, безусловно, определила проблему простоты использования и производительности и работает над ее решением с помощью того, что они называют опытом науки о данных. Они думают об этом как об IDE и больше для машинного обучения. Я не играл с ним, но просто отмечу, что это еще один интересный шаг IBM в области ML и Spark и аналитики в более широком смысле. Подробнее в анонсе здесь: https://www-03.ibm.com/press/us/en/pressrelease/49866.wss

На более базовом уровне некоторые обсуждения во время кормления скота (он же обед) касались надежности самих ноутбуков, что было ожидаемо из-за моего опыта работы с Data Fellas, которые видят огромный интерес к своим инструментам вокруг Spark-Notebook: http://spark-notebook.io

Я пообещал одному из парней, с которым столкнулся, поделиться с ним способом настройки сервиса AWS Spark для использования Spark-Notebook, который имеет определенные преимущества в надежности по сравнению с другими. Энди Петрелла из Data Fellas предоставил простой скрипт, который вы можете использовать:

На главном узле EMR4.6 выполните:

источник ‹(curl https://s3-us-west-1.amazonaws.com/spark-notebook-emr/4.6/emr-4.6.sh)

Можно еще многое рассказать о простоте использования. Надеюсь, это даст вам небольшой намек на то, что я вижу и что я думаю в это время.

Ребята из данных:

Особенно, если вы глобальная финансовая компания и, в частности, страховая компания, и работаете над Spark, возможно, вы уже сталкивались с Data Fellas. Они добились тихой известности благодаря своей работе с некоторыми из крупнейших страховых компаний Европы, а также обучению (Ксавье и Энди проводят трехдневный двухчасовой тренинг O'Reilly на тему «Распределенные конвейеры обработки данных осенью для пример").

Data Fellas теперь ищет несколько пользователей, чтобы опробовать их бета-версию программного обеспечения, которое в основном использует науку о данных on науку о данных. Их видение состоит во все более самообучающейся системе на основе Spark, которая охватывает все, от управления кластером (обычно с использованием Mesos) до опыта специалистов по данным (с использованием Spark-ноутбука). Учитывая мой опыт создания успешной компании, ориентированной на DevOps, я искал команду, которая действительно «понимает» DevOps для науки о данных, и я очень рад, что нашел Data Fellas.

Пожалуйста, свяжитесь с Data Fellas напрямую по адресу: http://www.data-fellas.guru.

Вы можете написать им по адресу: [email protected]

И последнее, но не менее важное: Spark 2.0:

Одной из самых больших новостей Spark Summit, конечно же, является то, что Spark 2.0 почти готов:

С реальной помощью Энди и Ксавьера из Data Fellas, вот несколько важных особенностей версии 2.0:

  1. Структурированная потоковая передача: абстрагируется от того, как данные обрабатываются в базовом механизме потоковой передачи. Он использует тот же API, что и обычные пакетные задания для структурированных запросов, Dataframe. По сути, повторяющиеся запросы будут использоваться в spark 2.x для вычисления значений в потоке, в 3.0 это может быть поток событий за событием, с точки зрения API ничего не должно измениться. Databricks даже рассматривает возможность создания системы, которая могла бы автоматически переключать движок с микропакетной обработки на пособытийную в зависимости от требований.
  2. Набор данных становится стандартом для обработки данных в Spark, он заменяет Dataframe, но добавляет к нему безопасность типов, на самом деле он является конструктором типа, а это означает, что он имеет по крайней мере один общий тип — следовательно, Dataframe становится просто экземпляром Dataset из тип Row (структура sql). Этот новый тип обеспечивает стабильность и упрощает обслуживание большой кодовой базы, где интенсивно использовался Dataframe, из-за его динамического поведения (строка — это контейнер разнородных данных на основе индекса).
  3. Прекращение поддержки API ML на основе RDD. Было объявлено, что отныне будет поддерживаться только MLlib API, использующий Dataset (или Dataframe). Это попытается максимально использовать преимущества оптимизатора (Tungsten) и скрыть сложности манипуляций, сделанных за кулисами.

Тем не менее, некоторые важные факты стоит выделить (и еще раз спасибо Энди Петрелле @noootsab за то, что указал мне на них):

  1. Набор данных будет доступен только для Scala (и транзитивно для Java), поскольку другие иностранные языки, поддерживаемые Spark (Python и R), являются динамическими.
  2. Dataset и Dataframe — это интерфейсы, предлагающие структурированный способ запроса данных или агрегирования вычислений и тому подобное. Это интересный способ абстрагироваться в общем API, особенно благодаря генерации кода, они могут быть совместимы с разными языками. Но они также ограничивают пользователя в использовании того, что было определено, другими словами, вы не можете легко прийти с новыми моделями или вычислениями.
  3. Похоже, что модели машинного обучения все равно придется реализовывать с помощью RDD, а затем отображать в наборе данных и, наконец, экспортировать на иностранные языки. Таким образом, Scala остается основным языком для внедрения новых функций (например, новых моделей). Для этого есть много других причин, но одной из самых важных является функция mapPartitions, которая доступна только (если вы не хотите платить цену за передачу данных и запуск их вне движка ядра Spark). ) в JVM, то есть Scala (или java).

TL;DR:

Саммит Spark показал мне сообщество и технологии с огромным импульсом. На мой взгляд, производительность специалистов по данным по-прежнему является узким местом; хотя теперь мы можем добиться невероятных результатов, включая создание гораздо более точного машинного обучения для прогнозирования погоды или, например, для наблюдения за пешеходами и реагирования на них во время вождения, мы по-прежнему слишком часто включаем и вырываем специалистов из их контекста. Пока IBM и, конечно же, DataBricks, мои друзья из Data Fellas и другие решают эти болевые точки, есть гораздо больше, чем может и должно быть сделано, и, скорее всего, будет сделано.