2015-10-28 42 views
0

我想在遠程系統上運行Samza作業,Samza作業存儲在HDFS上。用於在煤機上運行Samza作業的示例(https://samza.apache.org/startup/hello-samza/0.7.0/)涉及構建tar文件,然後解壓tar文件,然後運行位於tar文件內的shell腳本。如何在HDFS上部署和運行Samza作業?

這裏的HDFS示例根本沒有很好記錄(https://samza.apache.org/learn/tutorials/0.7.0/deploy-samza-job-from-hdfs.html)。它說要將tar文件複製到HDFS,然後遵循非HDFS示例中的其他步驟。

這意味着現在駐留在HDFS上的tar文件需要在HDFS內解壓,然後在該解壓縮的tar文件上運行一個shell腳本。但是你不能用hadoop fs外殼解壓HDFS tar文件...

沒有解開tar文件,你沒有權限訪問run-job.sh來啓動Samza作業。

有沒有人設法讓它起作用?

回答

0

我們以這種方式部署我們的Samza作業:我們在/opt/hadoop有hadoop庫,我們在/opt/samza/bin有Samza sh腳本,我們在/opt/samza/config有Samza配置文件。在這個配置文件中,有這樣一行:

yarn.package.path=hdfs://hadoop1:8020/deploy/samza/samzajobs-dist.tgz

當我們想部署我們的Samza工作的新版本中,我們只需要創建一個TGZ存檔,我們將它(不untaring)到HDFS以/deploy/samza/和我們運行/opt/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file:///opt/samza/config/$CONFIG_NAME.properties

唯一的缺點是我們忽略存檔中的配置文件。如果您更改存檔中的配置,則不會產生影響。您必須更改/opt/samza/config中的配置文件。另一方面,我們可以在不部署新的tgz存檔的情況下更改我們的Samza作業配置。 /opt/samza/bin下的shell腳本在每次構建時保持不變,因此您不需要因爲shell腳本而解壓歸檔文件包。

祝你好運! :-)

+0

完美,非常感謝。運行作業的機器(通過調用'run-job.sh')是否需要運行資源管理器? – John

+0

我們在同一臺機器上運行資源管理器,但我不確定是否有必要。這更多的是Hadoop問題,我不太瞭解Hadoop。對不起:-(。應該很容易通過測試:)。 –

+0

好吧,我從非RM機器運行它時似乎出現錯誤。您是否在HA中使用ResourceManager?如果是這樣,你在'yarn-site.xml'中將'yarn.resourcemanager.hostname'設置爲什麼? – John

相關問題