Зачем Изучать Spark?

Зачем разработчикам изучать Spark? Как освоить технику дома? Что может и чего не может Spark и что ждет его в будущем? Об этом в интервью с тренером по Java и Big Data в EPAM Алексей Зиновьев .



Зачем изучать Spark?



Зачем изучать Spark?

— Вы тренер по Java и Big Data — что это значит? Что ты делаешь? — В EPAM я готовлю и провожу тренинги по заявкам команд для старших и ведущих инженеров (или, как мы говорим в ИТ-сфере, Seniors и Leads).

Раскопать все темы на букву J на глубоком уровне не под силу одному человеку, поэтому я специализируюсь на следующем: Java Concurrency, JVM Internals (те самые кишки), Spring Boot, Kafka, Spark, Lombok, модель актора — в общем то, что позволяет как повысить продуктивность самого разработчика, так и ускорить работу его приложения.

Конечно, при необходимости я могу подготовить обучение по Java EE или паттернам, но таких материалов уже достаточно как в EPAM, так и за его пределами.

— Вы перечислили довольно много разных тем.

«Даже в этих темах постоянно появляется столько новых вопросов и задач, что почти каждое утро мне приходится говорить себе: «Ладно, хватит, это не то, чем я занимаюсь».

Итак, используя метод резки, я могу выделить ряд направлений, с которыми работаю.

Один из них — Искра.

Семейство фреймворков Spark растет и расширяется, поэтому и здесь вам придется выбрать что-то одно, чтобы стать настоящим экспертом.

В этом году я выбрал Structured Streaming, чтобы понимать, что происходит на уровне исходников, и быстро решать возникающие проблемы.

— Зачем разработчику учиться работать со Spark? — Три года назад, если вы хотели заниматься большими данными, вам нужно было уметь развернуть Hadoop, настроить его, написать чертовы задания MapReduce вручную и т. д. Сейчас не менее важно знание Apache Spark. Хотя даже сейчас на собеседовании любому инженеру по Big Data всё равно предложат использовать Hadoop. Но, возможно, они не будут такими осторожными и не потребуют опыта боевого применения.

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

Сообщество, которое ее разрабатывает, борется за честь подключить следующую базу данных NoSQL, написав для нее коннектор.

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

Раньше они копировали Hadoop в общих чертах, но у них были свои особенности, связанные с поддержкой дополнительных операций, каким-то внутренним оптимизатором и т.п.

— Еще есть зоопарк «Искра».

Что ты можешь сделать с этим? — Во-первых, Spark Zoo помогает быстро строить отчеты, извлекать факты и агрегаты из большого объема как статически лежащих данных, так и быстро поступающих в ваше Data Lake. Во-вторых, он решает проблему интеграции машинного обучения и распределенных данных, которые разбросаны по кластеру и вычисляются параллельно.

Сделать это можно довольно легко, а благодаря коннекторам R и Python возможности Spark могут использовать ученые, работающие с данными, которые максимально далеки от проблем построения высокопроизводительных бэкендов.

В-третьих, он справляется с задачей интеграции всего со всем.

Все пишут разъемы Spark. Spark можно использовать как быстрый фильтр для уменьшения размерности входных данных.

Например, перегнать, отфильтровать и агрегировать поток из Kafka, добавить его в MySQL, почему бы и нет? — Есть ли проблемы, с которыми «Спарк» не может справиться? - Конечно есть, ведь мы же не для того, чтобы я на ярмарке каркасов продал вам идеальный молоток, которым можно красить стены.

Если говорить о машинном обучении, то работа над построением идеального фреймворка еще продолжается.

Многие копии финального дизайна API сломаны, часть алгоритмов не распараллелена (есть только статьи и реализации для однопоточной версии).

Есть определенная проблема, что в Spark Core поменялись уже три итерации API: RDD, DataFrame, DataSet. Многие компоненты по-прежнему построены на RDD (я имею в виду Streaming, большинство алгоритмов MLlib, обработку больших графов).

— Что вы можете сказать о новых фреймворках Spark? — Все они пока недостаточно хороши для использования в производстве.

Наиболее готовым сейчас является Structured Streaming, вышедший из экспериментального подполья.

Но пока невозможно, например, объединить два потока.

Нам нужно сделать сальто назад и записать смесь DStreams/DataFrames. Но проблем с разработчиками, ломающими API от версии к версии, практически не возникает. Здесь все довольно спокойно, и код, написанный на Spark пару лет назад, теперь будет работать с небольшими изменениями.

—Куда направляется Искра? Какие проблемы он сможет решить в ближайшем будущем? — Spark движется к тотальному квадратично-вложенному восприятию реальности а-ля DataFrame везде, для всех компонентов.

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

Spark движется к тесной интеграции с DeepLearning, в частности, через проект TensorFrames. — Чего ожидать, например, через год? — Я думаю, что в 2018 году будет больше инструментов мониторинга, развертывания и других сервисов, чем сейчас, которые будут предлагать «Spark-кластер в один клик с полной интеграцией со всем и визуальным дизайнером» за разумные деньги или даже немного бесплатно — только с оплата серверного времени.

— На Youtube есть много видео о том, как установить Spark в два клика, но материала о том, что делать дальше, мало.

Что вы порекомендуете? — Могу порекомендовать несколько ресурсов:

— На каком уровне разработчикам стоит изучать Spark? — Конечно, можно нанять человека, у которого есть пара лабораторий по Паскалю или Python, для написания кода на Spark. Он без проблем сможет запустить «Hello World», но зачем ему это нужно? Мне кажется, изучение Spark будет полезно разработчикам, уже поработавшим на «кровавом энтерпрайзе», написанию бэкендов и хранимых процедур.

То же самое касается и тех, кто имеет солидный опыт настройки СУБД и оптимизации запросов, кто еще не забыл курс информатики, кто любит поразмышлять над тем, как обрабатывать данные, понижая константу в оценке сложности того или иного алгоритма.

Если вы уже несколько лет являетесь тимлидом, и «ковыряться в исходном коде» — не ваш конек, лучше обходите стороной Spark. — Можно ли освоить «Спарк» дома? — Вы можете начать с ноутбука, имеющего как минимум 8 ГБ оперативной памяти и пару ядер.

Все, что вам нужно сделать, это установить IDEA Community Edition + Scala Plugin + Sbt (можно и Maven), добавить пару зависимостей и все готово.

Это будет работать даже под Windows, но, конечно, лучше сразу всё развернуть под Ubuntu/CentOS. После этого вы можете развернуть небольшой кластер Spark в облаке для какого-нибудь проекта со сбором данных в сети или для обработки любого открытого набора данных с помощью github.com/caesar0301/awesome-public-datasets .

Давай и прочитай мое GitBook , Конечно.

— С какими трудностями вы обычно сталкиваетесь при работе со Spark? — То, что работает на небольшом наборе данных (методы тестирования и некоторые настройки JVM), часто ведет себя по-другому в больших масштабах продакшена.

Еще одна проблема для Java-разработчика — необходимость изучения Scala. Большая часть кодовой базы и сигнатур функций требует навыков чтения кода Scala со словарем.

Однако это приятный вызов.

И последнее, но не менее важное: сложность — даже Pet Project на «маленьком кластере» и «среднем наборе данных» стоит очень дорого.

Счета Amazon увеличиваются по сравнению с веб-хаками для освоения следующей платформы Java. 9 сентября в Питере я проведу обучение на Apache Spark для разработчиков Java. Я поделюсь своим опытом и расскажу, какие компоненты Spark вам стоит использовать сразу, как настроить среду, выстроить ETL-процесс, как работать с последней версией Spark и многое другое.

Теги: #Большие данные #java #spark #epam #apache spark #apache spark

Вместе с данным постом часто просматривают: