codecamp

Samza JobRunner

使用一个名为 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 时,此流程略有不同,稍后将介绍。

配置  »


Samza JMX
Samza 配置
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Samza API

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }