【问题标题】:how to pass parameters from web requests to spring boot yarn application如何将 Web 请求中的参数传递给 Spring Boot 纱线应用程序
【发布时间】:2015-04-24 16:44:26
【问题描述】:

我正在使用 spring-boot 和 spring-boot-yarn 将纱线应用程序提交到集群。

我的用例接近本教程https://github.com/spring-guides/gs-yarn-basic 中描述的用例。

唯一的区别是我的“客户端”应该是一个 Web 应用程序,并在发出 Web 请求时提交纱线作业。

我遇到的问题是对“客户端”网络应用程序的网络请求提供了我需要传递给纱线作业的参数。

在上述教程中,参数作为命令行参数传递给 application.yml 中指定的 appmaster / 容器。就我而言,这种方法不起作用,因为我对每个纱线作业都有一组不同的参数。

有没有办法将动态参数传递给纱线作业而不在 application.yml 中硬编码?

【问题讨论】:

    标签: hadoop spring-boot hadoop-yarn spring-data-hadoop


    【解决方案1】:

    最初的想法是防止“流氓”用户或应用程序传递属性,然后这些属性会自动以命令行选项结束,可能会对 hadoop 集群造成伤害。

    如果这是您想要的,值得在Spring Boot Yarn - Passing Command line arguments 中查看我的答案。

    话虽如此,您并不是第一个提出这个问题或“抱怨”它太难或不清楚如何去做的人。我们将在未来的版本中让这变得更容易,主要是因为这似乎是用户想要做的事情。

    【讨论】:

    • 谢谢 Janne,上面的链接不满足我的用例,但我仍然觉得你的回答很有用。似乎很明显,API 不支持将参数传递给 yarn 应用程序(除非它是一次性的,如命令行示例中的固定值参数),因此我不得不重新审视我的架构并切换到命令行应用与网络应用。
    • 好吧,现在我“明白”了你的意思。有一种 API 可以以编程方式使用,但它不是最容易使用的,这就是为什么我提到我们需要让它更容易。 spring-yarn-boot-cli 中的 YarnSubmitCommand.java 使用 spring-yarn-boot 中的 YarnSubmitApplication.java 来执行提交逻辑。还有其他支持的逻辑的其他命令/应用程序类。每个命令都是引导运行的应用上下文的一个实例。这样做是为了支持有关如何使用应用程序属性(env、props、yml 等)的所有不错的启动功能。
    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 2020-12-15
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多