我想让samza作业在远程系统上运行,samza作业存储在hdfs上。例子(https://samza.apache.org/startup/hello-samza/0.7.0/)在采煤机上运行samza作业需要构建tar文件,然后解压缩tar文件,然后运行tar文件中的shell脚本。
这里关于hdfs的例子根本没有很好的文档记录(https://samza.apache.org/learn/tutorials/0.7.0/deploy-samza-job-from-hdfs.html). 它说将tar文件复制到hdfs,然后按照非hdfs示例中的其他步骤进行操作。
这意味着现在驻留在hdfs上的tar文件需要在hdfs中被解压,然后在解压的tar文件上运行shell脚本。但是你不能用hadoop fs shell解压hdfs tar文件。。。
如果不解开tar文件,就无法访问run-job.sh来启动samza作业。
有没有人能把这个搞定?
1条答案
按热度按时间9ceoxa921#
我们以这样的方式部署samza作业:我们有hadoop库
/opt/hadoop
,我们有samza sh脚本/opt/samza/bin
我们有samza配置文件/opt/samza/config
. 在这个配置文件中有这样一行:yarn.package.path=hdfs://hadoop1:8020/deploy/samza/samzajobs-dist.tgz
当我们想要部署samza作业的新版本时,我们只需要创建tgz归档文件,就可以将它移动到hdfs中(不需要解构)/deploy/samza/
我们跑了/opt/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file:///opt/samza/config/$CONFIG_NAME.properties
唯一的缺点是我们忽略了归档文件中的配置文件。如果您更改存档中的配置,它不会生效。您必须更改中的配置文件/opt/samza/config
. 另一方面,我们可以在不部署新的tgz归档的情况下更改samza作业的配置。shell脚本在/opt/samza/bin
每个构建都保持相同,因此您不需要因为shell脚本而解压归档包。祝你好运!:-)