本教程依賴于 hello-samza 來啟動本地群集上的一些示例作業(yè),然后您將通過 JobsResource 訪問。完成本教程后,您將在本地構(gòu)建并部署 Samza REST 資源,更改了 JobsResource 的配置,并執(zhí)行了幾個基本的卷曲請求,以驗證該服務(wù)的工作原理。
讓我們開始吧。
按照 hello-samza 教程設(shè)置本地網(wǎng)格并運行維基百科工作。跳過 關(guān)機步驟,因為您需要運行網(wǎng)格才能查詢作業(yè)的 REST 服務(wù)。kafka-console-consumer.sh 如果您不想驗證作業(yè)的輸出,則可以選擇跳過所有命令。
注意你克隆 hello-samza 的路徑。您將需要配置 JobsResource 的安裝路徑。
Samza REST 的源代碼位于 Samza 存儲庫的 samza-rest 模塊中。要構(gòu)建它,請從項目的根目錄執(zhí)行以下 gradle 任務(wù)。
./gradlew samza-rest:clean releaseRestServiceTar
要部署服務(wù),您只需將 tarball 解壓縮到所需的位置即可。在這里,我們將在本地主機上部署 tarball
SAMZA_ROOT/samza-rest/build/distributions/deploy/samza-rest
這里 SAMZA_ROO T是通向你的Samza項目的根。
運行以下命令:
cd samza-rest/build/distributions/
mkdir -p deploy/samza-rest
tar -xvf ./samza-rest-0.13.0.tgz -C deploy/samza-rest
JobsResource 有一個必需的配置job.installations.path,它指定作業(yè)的安裝路徑。編輯配置文件:
deploy/samza-rest/config/samza-rest.properties
將job.installations.path設(shè)置為:
job.installations.path=/hello-samza-ROOT/deploy
hello-samza-ROOT 上面提到你的 hello-samza 克隆的路徑在哪里。這告訴 JobsResource 抓取此位置以查找所有已安裝的作業(yè)。
要部署服務(wù),請從提取的目錄中運行 run-samza-rest-service.sh 腳本。
cd deploy/samza-rest
./bin/run-samza-rest-service.sh \
--config-factory=org.apache.samza.config.factories.PropertiesConfigFactory \
--config-path=file://$PWD/config/samza-rest.properties
您可以向 run-samza-rest-service.sh 腳本提供兩個參數(shù)。一個是配置位置,另一個可選參數(shù)是用于讀取配置文件的工廠類。SamzaRestService 使用您的 ConfigFactory 從配置路徑獲取一個 Config 對象。在“ 作業(yè)運行器”頁面中更詳細地介紹了 ConfigFactory 。run -samza-rest-service.sh 腳本將阻塞,直到 SamzaRestService 終止。
注意:使用默認設(shè)置,JobsResource 將期望可以通過 ApplicationCLI 訪問具有本地資源管理器的 YARN 群集。沒有 YARN,JobsResource 將不會響應(yīng)任何請求。所以重要的是在下一步之前穿過 hello-samza 演示。
卷曲 JobsResource 以獲取所有安裝的作業(yè)
curl localhost:9139/v1/jobs
[{"jobName":"wikipedia-stats","jobId":"1","status":"STARTED","statusDetail":RUNNING},{"jobName":"wikipedia-parser","jobId":"1","status":"STARTED","statusDetail":RUNNING},{"jobName":"wikipedia-feed","jobId":"1","status":"STARTED","statusDetail":RUNNING}
現(xiàn)在卷曲 JobsResource 以停止其中一個作業(yè)
curl -X PUT localhost:9139/v1/jobs/wikipedia-feed/1?status=stopped
{"jobId":"1","jobName":"wikipedia-feed","status":"STOPPED","statusDetail":"FINISHED"}
恭喜,您已成功部署Samza REST服務(wù),并使用JobsResource列出作業(yè)并停止工作!
請參閱 JobsResource文檔 了解其余的API。
更多建議: