0

如何更改默认的 appdeployappmaster 属性?

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

[XNIO-2 task-2] 警告 oscdscStreamDeploymentController - 部署应用程序 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: 我解决了-Dspring.config.location在 DataFlow 服务器上添加 VM arg 的问题。给定的配置被传递给部署者,应用程序被有效地部署。

我会为它写一个答案。

4

2 回答 2

0

事实证明,我需要添加-Dspring.config.locationJVM arg 才能使其工作。-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如果我做对了)。

于 2016-12-05T09:30:12.763 回答
0

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

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

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

于 2016-12-02T18:15:46.870 回答