Samza 打包

2018-08-22 18:00 更新

JobRunner 頁(yè)談到了 run-job.sh ,以及如何使用它來(lái)在本地(ProcessJobFactory / ThreadJobFactory)或 Yarn(YarnJobFactory)啟動(dòng)作業(yè)。在顯示執(zhí)行流程的圖中,它還顯示一個(gè)run-container.sh 的腳本。這個(gè)腳本以及一個(gè) runamam.sh 腳本是 Samza 實(shí)際調(diào)用執(zhí)行代碼的。

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

run-container.sh 腳本負(fù)責(zé)啟動(dòng) SamzaContainer。run -am.sh 腳本負(fù)責(zé)啟動(dòng) Samza 的 YARN 應(yīng)用程序主程序。

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

通常,這兩個(gè)腳本捆綁在一個(gè)具有如下結(jié)構(gòu)的 tar.gz 文件中:

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

要運(yùn)行 Samza 作業(yè),請(qǐng)解壓縮其 tar.gz 文件,然后執(zhí)行 “JobRunner” 部分中定義的 run-job.sh 腳本。這種包裝方案有很多有趣的含義。首先,您會(huì)注意到該包中沒(méi)有配置。其次,您將注意到,lib 目錄包含運(yùn)行 Samza 作業(yè)所需的所有 JAR。

配置與 Samza 作業(yè)打包脫鉤的原因是它允許更新配置,而無(wú)需重新構(gòu)建整個(gè) Samza 包。這樣,當(dāng)您只需要調(diào)整一個(gè)參數(shù),并且不想擔(dān)心您的包是從哪個(gè)分支構(gòu)建的,或者是否處于穩(wěn)定狀態(tài)時(shí),這樣可以讓每個(gè)人都容易生活。它還具有強(qiáng)制配置在運(yùn)行時(shí)完全解決的附加好處。這意味著在調(diào)用 run-job.sh(使用 -config-path 和 -config-provider 參數(shù))的時(shí)候解決了作業(yè)的配置,從那時(shí)起,配置是不可變的,并通過(guò)它需要由 Samza(和 YARN,如果你使用它)。

第二個(gè)聲明,您的 Samza 包中包含所有需要運(yùn)行的 JAR,這意味著 Samza 包完全是自包含的。這允許 Samza 作業(yè)在獨(dú)立的 Samza 版本上運(yùn)行,而不會(huì)相互沖突。這與 Hadoop 不同,Hadoop 從工作正在運(yùn)行的本地機(jī)器(使用環(huán)境變量)中拉入 JAR。使用 Samza,您可能會(huì)在0.7.0版本上運(yùn)行您的工作,而其他人可能會(huì)在0.8.0版本上運(yùn)行其工作。這沒(méi)有問(wèn)題。

YARN工作  ?

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)