【问题标题】:Spring Dataflow and Yarn: How to set properties properly?Spring Dataflow 和 Yarn:如何正确设置属性?
【发布时间】:2016-12-05 17:30:12
【问题描述】:

如何更改默认的 appdeployappmaster 属性?

当我尝试通过 Spring DataFlow YARN 部署应用程序时。我注册了我的应用程序,创建了一个流,然后单击“部署”按钮。这样做时,我收到以下错误:

[XNIO-2 task-2] WARN o.s.c.d.s.c.StreamDeploymentController - 部署应用 StreamAppDefinition 时出现异常 [streamName=histo, name=my-app, registeredAppName=my-app, properties={spring.cloud.stream.bindings.input .destination=log, spring.cloud.stream.bindings.input.group=histo}]: java.util.concurrent.ExecutionException: org.springframework.yarn.YarnSystemException: Invalid host name: local host is: (unknown);目标主机是:“null”:8032; java.net.UnknownHostException;更多详情见:http://wiki.apache.org/hadoop/UnknownHost;嵌套异常是 java.net.UnknownHostException: Invalid host name: local host is: (unknown);目标主机是:“null”:8032; java.net.UnknownHostException;更多详情见:http://wiki.apache.org/hadoop/UnknownHost

如您所见,部署器无法找到“资源管理器”URI,尽管在 Spring DataFlow Server 启动时很好找到。 所以我只在部署时遇到问题。

我应该设置哪个属性来解决这个问题,我应该在哪里做呢?

编辑 1: 按照 Janne Valkealahti 的回答,我在 /dataflow/apps/stream/app/servers.yml 中添加了以下属性,重新启动了服务器,并尝试重新部署我的流。

spring:
  cloud:
    dataflow:
      yarn:
        version: 0.0.1-SNAPSHOT
    deployer:
      yarn:
        version: 1.0.2.RELEASE
    stream:
      kafka:
        binder:
          brokers: kafka.my-domain.com:9092
          zkNodes: zookeeper.my-domain.com:2181/node
  # Configured for Hadoop single-node running on localhost. Replace with property values reflecting your
  # actual Hadoop cluster when running in a distributed environment.
  hadoop:
    fsUri: hdfs://mapr.my-domain.com/referentiel/ca_category_2014/
    resourceManagerHost: mapr.my-domain.com
    resourceManagerPort: 8032
    resourceManagerSchedulerAddress: mapr.my-domain.com:8030
  session:
    store-type: none

我仍然收到完全相同的消息。

PS:我没有使用 Ambari,我想先了解它是如何手动工作的。

编辑 2: 我解决了在 DataFlow 服务器上添加 -Dspring.config.location VM arg 的问题。给定的配置被传递给部署者,应用程序就被有效地部署了。

我会为它写一个答案。

【问题讨论】:

    标签: spring hadoop hadoop-yarn spring-cloud-dataflow


    【解决方案1】:

    您没有确定您的安装是基于 ambari 还是正常的手动 YARN 安装,所以我认为是后者(手动)。

    我认为一个问题是在分发中您使用的config/servers.yml 对resourceManagerHost 的设置错误,因为它默认为localhost。启动流时,此文件仅分发一次到 hdfs。如果您在重新部署/创建流后更改了它,则 hdfs 目录中的应用程序将不会更新。默认情况下,hdfs 中的此文件为 /dataflow/apps/stream/app/servers.yml。

    这个错误是有道理的,因为控制整个东西的数据流纱线服务器也需要访问纱线资源管理器来提交应用程序。服务器的设置也来自同一个servers.yml 文件。

    【讨论】:

    • 感谢您的回复。我尝试了您的建议,遗憾的是它并没有改变任何事情。我编辑了我的问题以添加我尝试过的步骤。你觉得我所做的有什么问题吗?
    • 没关系,我找到了解决方案。感谢您的帮助
    【解决方案2】:

    事实证明,我需要添加 -Dspring.config.location JVM 参数才能使其工作。 -Dspring.config.location 应该指向包含 YARN 配置的文件,即:

    spring:
      cloud:
        dataflow:
          yarn:
            version: 0.0.1-SNAPSHOT
        deployer:
          yarn:
            version: 1.0.2.RELEASE
        stream:
          kafka:
            binder:
              brokers: kafka.my-domain.com:9092
              zkNodes: zookeeper.my-domain.com:2181/node
      # Configured for Hadoop single-node running on localhost. Replace with property values reflecting your
      # actual Hadoop cluster when running in a distributed environment.
      hadoop:
        fsUri: hdfs://mapr.my-domain.com/referentiel/ca_category_2014/
        resourceManagerHost: mapr.my-domain.com
        resourceManagerPort: 8032
        resourceManagerSchedulerAddress: mapr.my-domain.com:8030
      session:
        store-type: none
    

    然后将此配置传递给部署程序应用程序(appdeployerappmaster,如果我没记错的话)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-30
      • 2014-04-10
      • 1970-01-01
      • 2021-10-11
      • 2017-03-16
      • 2015-05-20
      • 2019-01-23
      • 1970-01-01
      相关资源
      最近更新 更多