我希望在远程系统上运行Samza作业,并将Samza作业存储在HDFS上。在煤机上运行Samza作业的示例(https://samza.apache.org/startup/hello-samza/0.7.0/)包括构建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作业。
有人设法让这个工作吗?
答案 0 :(得分:0)
我们以这种方式部署我们的Samza作业:我们在/opt/hadoop
中有hadoop库,我们在/opt/samza/bin
中有Samza sh脚本,我们在/opt/samza/config
中有Samza配置文件。在这个配置文件中有这一行:
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作业的配置。 /opt/samza/bin
下的shell脚本在每个构建中保持不变,因此您不需要因为shell脚本而解压缩归档包。
Samzing祝你好运! : - )