Зачем изучать Spark? |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-08-21 22:45 Зачем разработчикам изучать Spark? Как освоить технологию в домашних условиях? Что умеет, а чего не умеет Spark и что ждет его в будущем? Об этом – в интервью с тренером по Java и Big Data в ЕРАМ Алексеем Зиновьевым.
— В EPAM я готовлю и провожу тренинги по запросу команд для старших и ведущих инженеров (или, как говорят у нас на Айтищщине, – синьоров и лидов). Копать все темы с буквой J на глубоком уровне не под силу одному человеку, поэтому я специализируюсь на следующих: Java Concurrency, JVM Internals (те самые кишочки), Spring Boot, Kafka, Spark, Lombok, модель акторов – в общем, на том, что позволяет как повысить производительность самого разработчика, так и ускорить работу его приложения. Конечно, если потребуется, могу подготовить тренинг и по Java EE или паттернам, но таких материалов уже достаточно и в EPAM, и вне его. — Ты перечислил довольно много разных тем. — Даже в этих темах постоянно появляется так много новых вопросов и задач, что почти каждое утро я вынужден говорить себе: «Так, стоп, вот этим я не занимаюсь». Так, методом отсечений, получается выделить ряд направлений, с которыми я и работаю. Одно из них – Spark. Семейство Spark-фреймворков растет и ширится, поэтому и здесь приходится выбирать что-то одно, чтобы стать настоящим экспертом. В этом году я выбрал Structured Streaming, чтобы понимать, что творится на уровне его исходников и оперативно решать возникающие проблемы. — Зачем разработчику учиться работать со Spark? — Три года назад, если ты хотел заниматься Big Data, ты должен был кровь из носу уметь разворачивать Hadoop, настраивать его, писать ручками кровавые MapReduce джобы и т.д. Теперь столь же важно знание Apache Spark. Хотя и сейчас на собеседовании любого Big Data-инженера все равно будут гонять по Hadoop. Но, может, уже не так тщательно, и не станут требовать опыта боевого использования. Если под Hadoop долго и мучительно выходили интеграционные мостики с другими форматами данных, платформами, фреймворками, то в случае Spark мы видим другую ситуацию. Комьюнити, которое его разрабатывает, наперегонки соревнуется за честь подключить очередную NoSQL базу данных, написав для нее коннектор. Это приводит к тому, что многие крупные компании обращают внимание на Spark и проводят и миграцию на него: там реализовано большинство их пожеланий. Раньше они копировали Hadoop в общих деталях, при этом у них были свои изюминки, связанные с поддержкой дополнительных операций, какого-то внутреннего оптимизатора и т.д. — Есть еще Spark-зоопарк. Что можно делать с помощью него? — Во-первых, Spark-зоопарк помогает быстро строить отчеты, извлекать факты, агрегаты из большого количества как статично лежащих данных, так и стремительно втекающих в ваш Data Lake. Во-вторых, он решает проблему интеграции машинного обучения и распределенных данных, которые размазаны по кластеру и обсчитываются параллельно. Это делается достаточно легко, причем за счет R- и Python-коннекторов возможностями Spark могут пользоваться дата-сайентисты, которые максимально далеки от проблем построения высокопроизводительных бэкэндов. В-третьих, он справляется с проблемой интеграции всего со всем. Все пишут Spark-коннекторы. Spark можно использовать как быстрый фильтр для уменьшения размерности входных данных. Например, перегонять, фильтруя и агрегируя поток из Kafka, складывая его в MySQL, почему нет? — А есть проблемы, с которыми Spark не может справиться? — Конечно есть, ведь мы все-таки не на ярмарке фреймворков, чтобы я вам продал идеальный молоток, которым можно красить стены. Если говорить о том же машинном обучении, работы по построению идеального фреймворка еще ведутся. Ломается много копий по конечному дизайну API, часть алгоритмов не распараллеливается (есть только статьи и имплементации по однопоточному варианту). Есть определенная проблема в том, что в Spark Core уже сменились три витка API: RDD, DataFrame, DataSet. Многие компоненты до сих пор построены на RDD (я имею в виду Streaming, большинство алгоритмов MLlib, обработку больших графов). — Что скажешь о новых фреймворках Spark? — Все они пока недостаточно хороши, чтобы использовать в продакшене. Самый готовый сейчас – Structured Streaming, который вышел из экспериментального подполья. Но в нем пока нельзя, например, сделать join двум потокам. Приходится делать кувырок назад и писать на миксе DStreams/DataFrames. Зато почти нет проблем с тем, что разработчики ломают API от версии к версии. Тут все достаточно спокойно, и код, написанный на Spark пару лет назад, будет работать и теперь с небольшими изменениями. — Куда движется Spark? Какие задачи он сможет решать в ближайшем будущем? — Spark движется к тотальному квадратно-гнездовому восприятию действительности а-ля DataFrame везде, для всех компонент. Это позволит безболезненно удалить поддержку RDD в Spark 3.0 и полностью сосредоточиться на движке для оптимизации того SparkAssembler, в который превращается ваш верxнеуровневый набор операций над табличками. Spark идет по пути сильной интеграции с DeepLearning, в частности, силами проекта TensorFrames. — Чего ждать через год, например? — Я думаю, в 2018 году станет больше, чем сейчас, инструментов мониторинга, деплоя и прочих сервисов, которые будут предлагать «Spark-кластер за один клик с полной интеграцией со всем подряд и визуальным конструктором» за разумные деньги или даже слегка бесплатно – только с оплатой времени серверов. — На Youtube есть много много роликов, как поставить Spark в два клика, но мало материалов о том, что делать дальше. Что посоветуешь? — Я могу порекомендовать несколько ресурсов:
— Разработчикам какого уровня стоит осваивать Spark? — Посадить писать код на Spark можно, конечно, и человека, имеющего пару лаб на Pascal или Python. «Hello World» он сможет запустить без проблем, но зачем это ему? Мне кажется, изучать Spark будет полезно разработчикам, которые уже поработали в «кровавом ынтерпрайзе», пописали бэкэнды, хранимые процедуры. То же самое – о тех, у кого есть солидный опыт настройки СУБД и оптимизации запросов, кто еще не забыл еще курс Computer Science, кому нравится думать, как обрабатывать данные, понижая константу в оценке трудоемкости того или иного алгоритма. Если вы тимлидите уже несколько лет, и «ковыряться в исходниках» – не ваше, лучше пройти мимо Spark. — Можно ли освоить Spark в домашних условиях? — Стартовать можно и с ноутбуком, на котором стоит хотя бы 8Gb RAM и пара ядер. Достаточно поставить 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 возрастают по сравнению с web-поделками для осовоения очередного Java-фреймворка. 9 сентября в Петербурге я проведу тренинг по Apache Spark для Java-разработчиков. Поделюсь своим опытом и расскажу, какие компоненты Spark стоит использовать сразу, как настроить окружение, построить свой процесс ETL, как работать с новейшей версией Spark и не только. Источник: habrahabr.ru Комментарии: |
|