Samza JobRunner

2018-08-17 16:24 更新

使用一个名为 run-job.sh 的脚本启动 Samza 作业。

samza-example/target/bin/run-job.sh \
  --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory \
  --config-path=file://$PWD/config/hello-world.properties

您为 run-job.sh 脚本提供两个参数:一个是配置位置,另一个是用于读取配置文件的工厂类。run-job.sh 脚本实际上是在执行一个名为 JobRunner 的 Samza 类。JobRunner 使用您的ConfigFactory 从配置路径获取一个 Config 对象。

public interface ConfigFactory {
  Config getConfig(URI configUri);
}

Config 对象只是 Map 的包装,有一些不错的帮助方法。可以立即使用的是,Samza 随附了 PropertiesConfigFactory,但开发人员可以实现任何他们希望的 ConfigFactory。

一旦 JobRunner 得到您的配置,它会将您的配置提供给由 “job.factory” 属性定义的 StreamJobFactory 类。Samza 拥有三个作业工厂实现:ThreadJobFactory,ProcessJobFactory 和YarnJobFactory。StreamJobFactory 的职责是给 JobRunner 一个可以运行的工作。

public interface StreamJob {
  StreamJob submit();

  StreamJob kill();

  ApplicationStatus waitForFinish(long timeoutMs);

  ApplicationStatus waitForStatus(ApplicationStatus status, long timeoutMs);

  ApplicationStatus getStatus();
}

一旦 JobRunner 获得了工作,它就会在 job 上调用 submit()。这个方法是告诉 StreamJob 实现来启动 SamzaContainer。在 LocalJobRunner 的情况下,它使用一个 run-container.sh 脚本在单独的进程中执行 SamzaContainer,这将在您运行 run-job.sh 的计算机上本地启动一个 SamzaContainer。

当您使用 YARN 时,此流程略有不同,稍后将介绍。

配置  »


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

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号