如何部署&在HDFS上运行Samza工作?

时间:2015-10-28 13:20:32

标签: hadoop hdfs apache-samza

我希望在远程系统上运行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作业。

有人设法让这个工作吗?

1 个答案:

答案 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祝你好运! : - )