0

我想在远程系统上运行 Samza 作业,并将 Samza 作业存储在 HDFS 上。在煤机上运行 Samza 作业的示例 ( https://samza.apache.org/startup/hello-samza/0.7.0/ ) 包括构建 tar 文件,然后解压缩 tar 文件,然后运行 ​​shell 脚本它位于 tar 文件中。

这里的 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 作业。

有没有人设法让这个工作?

4

1 回答 1

0

我们以这种方式部署 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 脚本而解压缩存档包。

祝 Samzing 好运!:-)

于 2015-10-28T14:25:04.873 回答