我们正在hadoopYarn上运行samza作业。到目前为止,我们都是通过在资源管理器主机上调用run-job.sh来手动部署job。
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”都放在资源管理器本地文件系统上。
但现在我想远程部署作业。为此,我试图使用资源管理器提交应用RESTAPI。
请求:posthttp://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/promo rules consumer/bin/run-job.sh:没有这样的文件或目录
请告诉我正确的方法。是否有任何链接显示通过restapi或java代码部署samza作业。
谢谢
1条答案
按热度按时间pb3skfrl1#
我们正在做的是:
将tar.gz工件上载到远程集群hdfs(您可以使用web hdfs:
http—跟随put'http://namenode:50070/webhdfs/v1/user/someuser/location/samza artifact.tar.gz?op=create&user.name=someuser&overwrite=true'</local artifact location/your-artifact-name-dist.tar.gz
在任务属性中,指定yarn.package.path,类似于
Yarn. Package .路径=hdfs://namenode:8020/user/someuser/location/samza-artifact.tar.gz
samza需要知道你的yarn设置,从hadoop集群复制以下内容,放入/yarn location/conf(注意,/conf很重要)
apacity-scheduler.xml
core-site.xml文件
log4j.属性
Yarn-env.sh
yarn-site.xml文件
设置hadoop\u yarn\u home环境变量
export hadoop\u yarn\u home=/yarn location(此处不带conf..)
运行run-job.sh:
bin/run-job.sh--config factory=org.apache.samza.config.factories.propertiesconfigfactory--config path=/path to config//your-task.properties