Samza 打包

2018-08-22 18:00 更新

JobRunner 页谈到了 run-job.sh ,以及如何使用它来在本地(ProcessJobFactory / ThreadJobFactory)或 Yarn(YarnJobFactory)启动作业。在显示执行流程的图中,它还显示一个run-container.sh 的脚本。这个脚本以及一个 runamam.sh 脚本是 Samza 实际调用执行代码的。

bin/run-am.sh
bin/run-container.sh

run-container.sh 脚本负责启动 SamzaContainer。run -am.sh 脚本负责启动 Samza 的 YARN 应用程序主程序。

因此,runamam.sh 脚本仅由 YarnJob 使用,但 YarnJob 和 ProcessJob 都使用 run-container.sh。

通常,这两个脚本捆绑在一个具有如下结构的 tar.gz 文件中:

bin/run-am.sh
bin/run-class.sh
bin/run-job.sh
bin/run-container.sh
lib/*.jar

要运行 Samza 作业,请解压缩其 tar.gz 文件,然后执行 “JobRunner” 部分中定义的 run-job.sh 脚本。这种包装方案有很多有趣的含义。首先,您会注意到该包中没有配置。其次,您将注意到,lib 目录包含运行 Samza 作业所需的所有 JAR。

配置与 Samza 作业打包脱钩的原因是它允许更新配置,而无需重新构建整个 Samza 包。这样,当您只需要调整一个参数,并且不想担心您的包是从哪个分支构建的,或者是否处于稳定状态时,这样可以让每个人都容易生活。它还具有强制配置在运行时完全解决的附加好处。这意味着在调用 run-job.sh(使用 -config-path 和 -config-provider 参数)的时候解决了作业的配置,从那时起,配置是不可变的,并通过它需要由 Samza(和 YARN,如果你使用它)。

第二个声明,您的 Samza 包中包含所有需要运行的 JAR,这意味着 Samza 包完全是自包含的。这允许 Samza 作业在独立的 Samza 版本上运行,而不会相互冲突。这与 Hadoop 不同,Hadoop 从工作正在运行的本地机器(使用环境变量)中拉入 JAR。使用 Samza,您可能会在0.7.0版本上运行您的工作,而其他人可能会在0.8.0版本上运行其工作。这没有问题。

YARN工作  »

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号