как передать параметры из веб-запросов в приложение spring boot yarn

Я использую spring-boot и spring-boot-yarn для отправки приложений пряжи в кластер.

Мой вариант использования близок к описанному в этом руководстве https://github.com/spring-guides/gs-yarn-basic.

Единственное отличие состоит в том, что мой «клиент» должен быть веб-приложением и отправлять задания пряжи при выполнении веб-запросов.

У меня проблема в том, что веб-запросы к «клиентскому» веб-приложению предоставляют параметры, которые мне нужно передать в задание пряжи.

В приведенном выше руководстве параметры передаются в качестве аргументов командной строки мастеру приложений/контейнеру, указанному в application.yml. В моем случае этот подход не работает, так как у меня разные наборы параметров для каждого задания пряжи.

Есть ли способ передать динамические параметры заданиям пряжи без их жесткого кодирования в application.yml?


person Victor Iacoban    schedule 23.04.2015    source источник


Ответы (1)


Первоначальная идея заключалась в том, чтобы не допустить, чтобы «мошеннические» пользователи или приложения передавали свойства, которые затем автоматически попадали бы в параметры командной строки, потенциально причиняя вред кластеру Hadoop.

Стоит проверить мой ответ в Spring Boot Yarn - Передача аргументов командной строки если ты этого хочешь.

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

person Janne Valkealahti    schedule 24.04.2015
comment
Спасибо, Янне, приведенная выше ссылка не соответствует моему варианту использования, но я все же нашел ваш ответ полезным. Казалось довольно очевидным, что в API нет поддержки для передачи параметров в приложения пряжи (если только это не одноразовый параметр с фиксированным значением, как в примере с командной строкой), в результате мне пришлось пересмотреть свою архитектуру и переключиться на командную строку. приложение против веб-приложения. - person Victor Iacoban; 24.04.2015
comment
Хорошо, теперь я понял, что вы имели в виду. Существует своего рода API, который можно использовать программно, но он не самый простой в использовании, и поэтому я упомянул, что нам нужно упростить его. YarnSubmitCommand.java из spring-yarn-boot-cli использует YarnSubmitApplication.java из spring-yarn-boot для выполнения логики отправки. Существуют другие классы команд/приложений для другой поддерживаемой логики. Каждая команда — это экземпляр контекста приложения, запускаемый boot. Это было сделано таким образом, чтобы поддерживать все приятные функции загрузки, связанные с тем, как можно использовать свойства приложения (env, props, yml и т. д.). - person Janne Valkealahti; 25.04.2015