[Перевод] Перевод текста интеврью с Юлианом Драгосом (Scala)

Тренер учебного центра Luxoft Training Назарий Шиманский взял интервью у Юлиана Драгоса — известного разработчика, внесшего большой вклад в развитие языка Scala. Предлагаем познакомиться с переводом интервью.
4806f49333894bf59f2d472a77244beb.jpgЮлинан занимается языком Scala с 2004 года, в это же время он начал работать в исследовательской лаборатории Мартина Одерски (Martin Odersky) в Федеральной политехнической школе Лозанны. Им была написана серверная часть (backend) виртуальной машины Java и оптимизатор байткода, а также он работал над различными частями компилятора. Кроме того, Юлиан реализовал для Scala специализацию с помощью типов.

В 2010 году Юлиан получил степень PhD в Федеральной политехнической школе Лозанны. Работал в компании Typesafe с момента ее основания Мартином Одерски, создателем языка Scala, занимаясь созданием средств разработки (в частности, написал плагин Eclipse для Scala). Затем возглавил группу Spark в компании Lightbend (прежнее название — Typesafe) и внес значительный вклад в развитие этого проекта. Кроме того, он ведет учебные курсы и помогает клиентам в реализации Spark-проектов.

Перевод и публикация выполнены с разрешения автора

НШ: Добрый день, Юлиан. Меня зовут Назарий Шиманский.

ЮД: Добрый день.

НШ: Я работаю в Luxoft инженером и тренером в учебном центре. Я рад, что у нас есть возможность поговорить с Вами. Я знаю, что Вы вместе с Мартином Одерски уже длительное время занимаетесь Scala. Как Вы думаете, для каких проектов целесообразно использовать этот язык?

ЮД: Прежде всего спасибо за приглашение. Буду очень рад побеседовать с Вами. Что касается применения Scala, то еще года два назад я бы ответил, что этот язык лучше всего подходит для программирования серверной части приложений, то есть там, где сегодня широко используется Java. Поэтому для любых приложений, работающих на виртуальных машинах Java, язык Scala подходит наилучшим образом. При этом не исключается и клиентская часть. Как Вы, наверное, знаете, последние два года применяется новый компилятор для кода Scala — Scala JS, который компилирует программы, написанные на языке Scala, в Java Script для того, чтобы их можно было запускать в браузере. Такой подход оказался вполне успешным. Поэтому сейчас я бы изменил свой ответ и сказал, что Scala хорошо подходит как для клиентской, так и для серверной частей приложений. Это очень мощное сочетание, так как можно использовать язык и навыки, которые имеются, для обеих сторон приложения.
Вероятно, сегодня Scala не очень подходит для более глубокого системного программирования, где обычно используется язык C или утилиты командной строки и где время запуска виртуальной машины Java может быть проблемой, хотя, конечно, существуют определенные обходные решения.

Кроме того, сейчас активно развивается новая область, в которой широко используется Scala, — это большие данные (BigData). И я думаю, это одна из причин нашего сегодняшнего разговора. Scala — это функциональный язык, который особенно хорошо подходит для работы с данными, и благодаря программной платформе Spark язык Scala находит применение в области обработки больших данных. В заключении, я бы сказал, что сейчас эти три направления являются наиболее перспективными для Scala. Это язык программирования общего назначения, и конечно, его можно использовать во многих других областях.

НШ: Если говорить о Spark, какой язык Вы рекомендовали бы использовать для создания приложений Spark?

ЮД: Прежде всего я бы выбрал Scala. Для этого есть несколько причин. Во-первых, Scala прекрасно подходит для работы с данными, особенно в контексте параллельной обработки и обработки данных без побочных эффектов. Вторая причина — платформа Spark сама разработана с использованием Scala. Поэтому вы получаете доступ ко всем новым возможностям; все, что появляется нового в Spark, будет сначала доступно на языке Scala, и только спустя довольно длительное время команда Spark предлагает новые API на других языках. Мне кажется, у вас всегда будет некоторое преимущество при использовании того же языка, на котором разрабатывается сама платформа. Я думаю, что для специалистов по обработке данных отличным выбором будет язык Python, особенно если они его специально изучали. Я бы рекомендовал Python для чисто исследовательских приложений, а в случаях когда нужно разработать готовый продукт, лучше использовать Scala.

НШ: Спасибо. Я знаю, что Вы планируете весной провести семинар в России, поэтому хотелось бы узнать, какой менеджер кластеров Вы предпочитаете использовать в своих проектах и что будете использовать для демонстрации во время тренинга?

ЮД: Да, отличный вопрос. Обычно я использую Mesos. Это менеджер кластеров общего назначения, и мне нравится эта система, потому что она позволяет объединять нагрузки; например, можно выполнять задачи Spark одновременно с другими приложениями, которые, например, используются в Вашей компании. И к тому же система Mesos развивается. Это новый проект, начатый в Университете Беркли, где создавалась платформа Spark, в той же лаборатории. Поэтому там есть своего рода синергия. Что касается семинара, то поскольку у нас будет только один день и надо много рассказать, я буду использовать локальный запуск Spark. Участники семинара смогут выполнить установку с нуля, запустить задачи Spark и быстро увидеть результаты работы.

НШ: А каким Spark API будет уделено основное внимание во время тренинга?

ЮД: Так как у меня будет только один день, я в основном буду рассказывать о базовых вещах. Когда слушатели получат правильное представление о том, как работает Spark, думаю, они смогут легко перейти на другие библиотеки. Если отвечать прямо на Ваш вопрос, то мы много времени уделим RDD API, а также тому, что происходит за кулисами. Рассмотрев основные понятия, мы можем перейти к API более высокого уровня. Особенно важно хорошо понимать Spark SQL. Так что основное внимание мы уделим этим двум вещам.

НШ: Спасибо. А Вы планирует привести примеры того, когда и какие форматы данных, поддерживаемые Spark, нужно использовать?

ЮД: Конечно. Мы обсудим процесс получения и обработки данных, т. е. какие виды данных можно считывать и записывать в Spark, в частности, из Spark SQL. Этот вопрос мы рассмотрим во второй части курса.

НШ: Что Вы думаете о модулях Spark, таких как Streaming, GraphX и Machine Learning? Вы собираетесь говорить о них во время тренинга?

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

Модуль Spark Streaming — это чрезвычайно интересный проект, и сама по себе технология обработки потоков данных сегодня находится в высоко конкурентной среде, где уже достаточно готовых решений и библиотек.

Я знаю, что в Spark Streaming изменили API и у них есть своё видение, как это будет развиваться, поэтому я обязательно буду за этим следить. Модуль Machine Learning также очень интересен, поскольку сейчас многие занимаются большими данными и хотят использовать алгоритмы и методы машинного обучения в системах для обработки данных.
Мы вкратце поговорим об этом модуле, не останавливаясь на его практическом применении. Как я уже сказал, моя цель в этом тренинге — дать слушателям понимание и мысленную модель того, как работает Spark. Если им в дальнейшем понадобится Spark, они смогут самостоятельно более подробно изучить эту систему.

НШ: А что Вы думаете по поводу вендоров, которые предлагают дистрибутивы и сервисы для Больших данных и включают в них Spark? Каковы, на ваш взгляд, сильные и слабые стороны таких предложений?

ЮД: Я думаю, такие предложения вполне допустимы. Я бы сказал, что все зависит от того, какого рода бизнес вы развиваете. Например, вы издаете местную, городскую газету. К сожалению, газеты сейчас уходят в прошлое. И у вас нет средства на команду, которая занималась бы Большими данными и разработкой продуктов для вашего бизнеса. В этом случае имеет смысл воспользоваться коммерческим сервисом, который дает вам готовый продукт.
Однако если большие данные играют важную роль в вашем бизнесе, то, вероятно, вам необходимо иметь собственную команду разработчиков. Думаю, на самом деле это зависит от того, насколько ваш основной бизнес связан с Большими данными.

НШ: Большое спасибо. Это все вопросы, которые я хотел Вам задать.

ЮД: Спасибо.

Мастер-класс Юлиана Драгоса пройдет 6 апреля в Москве и будет посвящен разработке приложений Apache Spark на языке Scala. Подробнее можно узнать здесь.

Комментарии (1)

  • 1 марта 2017 в 11:38

    0

    Поэтому вы получаете доступ ко всем новым возможностям; все, что появляется нового в Spark, будет сначала доступно на языке Scala, и только спустя довольно длительное время команда Spark предлагает новые API на других языках

    Lightbend сейчас себя позиционирует как «Java as first-class citizen», не думаю что java api будет отставать от scala api.

© Habrahabr.ru