如何在远程Yarn资源管理器上部署samza作业



我们正在hadoop yarn上运行samza job。到目前为止,我们通过在资源管理器主机上调用run-job.sh来手动部署作业。

run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file:///usr/share/promo-rules-consumer/config/config.properties

Samza部署脚本和Samza发布tar " Samza -dist.tar.gz"都放在资源管理器本地文件系统上。

但是现在我想远程部署作业。为此,我试图使用资源管理器提交应用程序rest API。

请求:POST http://hostname:8088/ws/v1/cluster/apps

身体:

{
    "application-id":"application_1470648527247_0031",
    "application-name":"test1_0",
    "am-container-spec":
    {
      "commands":
      {
        "command":"/usr/share/promo-rules-consumer/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file:///usr/share/promo-rules-consumer/config/montecarlo.properties"
      }
    },
    "application-type":"SAMZA"
  }

然而,我可以看到错误从资源管理器UI

异常提示:/bin/bash:/usr/share/promoo -rules-consumer/bin/run-job.sh: No such file or directory

请告诉我做这件事的正确方法。是否有任何链接显示通过rest API或java代码部署samza作业?

谢谢

我们正在做的是:

  1. 上传tar.gz文件到远程HDFS集群(你可以使用web-hdfs:

    )

    http——follow PUT"http://namenode: 50070/webhdfs/v1/user/someuser/位置/samza-artifact.tar.gz ? op = CREATE& user.name = someuser&覆盖= true"& lt;/local-artifact-location your-artifact-name-dist.tar.gz

  2. 在任务属性中指定yarn.package。路径,比如

    yarn.package.path = hdfs://namenode: 8020/user/someuser/位置/samza-artifact.tar.gz

  3. Samza需要知道你的YARN设置,从你的生产Hadoop集群复制以下内容,放入/YARN -location/conf(注意,/conf很重要)

    • apacity-scheduler.xml
    • core-site.xml
    • log4j . properties的
    • yarn-env.sh
    • yarn-site.xml
  4. 设置HADOOP_YARN_HOME环境变量

export HADOOP_YARN_HOME =/yarn-location(这里没有conf ..)

  • 运行Run -job.sh

    bin/run-job.sh——config-factory = org.apache.samza.config.factories。PropertiesConfigFactory——config-path =///your-task.properties path-to-config

  • 最新更新