Samza JobRunner

2018-08-17 16:24 更新

使用一個名為 run-job.sh 的腳本啟動 Samza 作業(yè)。

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 腳本提供兩個參數(shù):一個是配置位置,另一個是用于讀取配置文件的工廠類。run-job.sh 腳本實際上是在執(zhí)行一個名為 JobRunner 的 Samza 類。JobRunner 使用您的ConfigFactory 從配置路徑獲取一個 Config 對象。

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

Config 對象只是 Map 的包裝,有一些不錯的幫助方法??梢粤⒓词褂玫氖牵琒amza 隨附了 PropertiesConfigFactory,但開發(fā)人員可以實現(xiàn)任何他們希望的 ConfigFactory。

一旦 JobRunner 得到您的配置,它會將您的配置提供給由 “job.factory” 屬性定義的 StreamJobFactory 類。Samza 擁有三個作業(yè)工廠實現(xiàn):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 實現(xiàn)來啟動 SamzaContainer。在 LocalJobRunner 的情況下,它使用一個 run-container.sh 腳本在單獨的進程中執(zhí)行 SamzaContainer,這將在您運行 run-job.sh 的計算機上本地啟動一個 SamzaContainer。

當您使用 YARN 時,此流程略有不同,稍后將介紹。

配置  ?


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號