我想让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作业。

有没有人设法使它正常工作?

最佳答案

我们以这种方式部署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中的配置文件。另一方面,我们可以更改Samza作业的配置,而无需部署新的tgz存档。每次构建时/opt/samza/bin下的shell脚本都相同,因此,由于这些shell脚本,您无需解压缩存档软件包。

祝你好运! :-)

关于hadoop - 如何在HDFS上部署和运行Samza作业?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33392171/

10-12 22:55