Зачем разработчикам изучать Spark? Как освоить технику дома? Что может и чего не может Spark и что ждет его в будущем? Об этом в интервью с тренером по Java и Big Data в EPAM Алексей Зиновьев .
— Вы тренер по 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 в два клика, но материала о том, что делать дальше, мало.
Что вы порекомендуете? — Могу порекомендовать несколько ресурсов:
- Блог блоков данных (англ) - основной источник информации
- Освоение Apache Spark 2 (англ) — наиболее полный GitBook по всем аспектам Spark в стиле технической документации.
- Обработка данных в Spark 2.2 и Kafka 0.10 (рус) - практические кейсы
- Видео BigData/Hadoop/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
-
Сколько Законов Нужно Для Счастья?
19 Oct, 24 -
Верхняя Пышма: В Конце Года
19 Oct, 24 -
Оптимизация Затрат На Sms
19 Oct, 24