在作業(yè)范圍(而不是集群,容器或任務范圍)上展開操作。初始實施包括列出所有作業(yè),獲取特定作業(yè)的狀態(tài)以及啟動或停止單個作業(yè)的功能。
以下各節(jié)提供有關每個請求的響應結構和詳細描述的一般信息。
所有回復將包含作業(yè)狀態(tài)或錯誤消息。
工作狀態(tài)
工作狀態(tài)將以下列形式:
{
"status":"STOPPED",
"statusDetail":"KILLED",
"jobName":"wikipedia-parser",
"jobId":"1"
}
status 是這個工作的抽象 Samza 狀態(tài)。最初,它將是{開始,啟動,停止,未知}之一。
statusDetail 是作業(yè)的實現(xiàn)特定狀態(tài)。對于 YARN,它將是 YarnApplicationState 枚舉中的值之一。
錯誤信息
每個錯誤響應都具有以下結構:
{
"message": "Unrecognized status parameter: null"
}
message 是響應中唯一的字段,并包含對該問題的描述。
列出主機上安裝的所有作業(yè),并提供其狀態(tài)。
GET /v1/jobs
Status: 200 OK
[
{
"status":"STOPPED",
"statusDetail":"KILLED",
"jobName":"wikipedia-parser",
"jobId":"1"
},
{
"status":"STARTED",
"statusDetail":"RUNNING",
"jobName":"wikipedia-feed",
"jobId":"1"
},
{
"status":"STOPPED",
"statusDetail":null,
"jobName":"wikipedia-stats",
"jobId":"1"
}
]
狀態(tài) | 描述 |
---|---|
200好 | 操作成功完成,并返回每個作業(yè)的當前作業(yè)狀態(tài)。 |
500服務器錯誤 | 在服務器上執(zhí)行該命令時發(fā)生錯誤。例如命令超時。
|
獲取指定作業(yè)的狀態(tài)。
GET /v1/jobs/{jobName}/{jobId}
該參數(shù) {jobName} 和 {jobId} 路徑參數(shù)反映作業(yè)配置中 “job.name” 和 “job.id” 的值。
GET /v1/jobs/wikipedia-feed/1
Status: 200 OK
{
"status":"STARTED",
"statusDetail":"RUNNING",
"jobName":"wikipedia-feed",
"jobId":"1"
}
狀態(tài) | 描述 |
---|---|
200好 | 操作成功完成,并返回當前作業(yè)狀態(tài)。 |
錯誤(404 | 找不到指定的job +實例。
|
500服務器錯誤 | 在服務器上執(zhí)行該命令時發(fā)生錯誤。例如命令超時。
|
如果尚未啟動,請使用指定的應用程序名稱啟動作業(yè)。命令將在啟動啟動操作時返回。
PUT /v1/jobs/{jobName}/{jobId}?status=started
Form 參數(shù) status 是請求結束時作業(yè)的預期狀態(tài)。
PUT /v1/jobs/wikipedia-feed/1?status=started
Status: 202 Accepted
{
"status":"STARTING",
"statusDetail":"ACCEPTED",
"jobName": "wikipedia-feed",
"jobId": "1"
}
狀態(tài) | 描述 |
---|---|
200好 | 操作成功完成,并返回當前作業(yè)狀態(tài)。 |
400錯誤請求 | 請求有問題。例如無效狀態(tài)參數(shù)。
|
錯誤(404 | 找不到指定的job +實例。
|
500服務器錯誤 | 在服務器上執(zhí)行該命令時發(fā)生錯誤。例如命令超時。
|
如果尚未停止,則停止具有指定應用程序名稱的作業(yè)。
PUT /v1/jobs/{jobName}/{jobId}?status=stopped
Form 參數(shù) status 是請求結束時作業(yè)的預期狀態(tài)。
PUT /v1/jobs/wikipedia-feed/1?status=stopped
Status: 202 Accepted
{
"status":"STOPPED",
"statusDetail":"KILLED",
"jobName": "wikipedia-feed",
"jobId": "1"
}
狀態(tài) | 描述 |
---|---|
200好 | 操作成功完成,并返回當前作業(yè)狀態(tài)。 |
400錯誤請求 | 請求有問題。例如無效狀態(tài)參數(shù):
|
錯誤(404 | 找不到指定的job +實例。
|
500服務器錯誤 | 在服務器上執(zhí)行該命令時發(fā)生錯誤。例如命令超時:
|
JobsResource 使用三個主要抽象,用戶可以實現(xiàn)這些抽象,以處理其環(huán)境特有的任何細節(jié)。
該配置必須明確指定一個 JobProxy 工廠類。相比之下,InstallationFinder 和 JobStatusProvider 抽象是 JobProxy 的自然擴展,僅用于演示發(fā)現(xiàn)已安裝作業(yè)和獲取作業(yè)狀態(tài)的模式。但是,這并不是明確的要求。
該 SimpleYarnJobProxy 附帶 Samza REST 的目的是展示 JobProxy 的功能實現(xiàn)與 Hello Samza 工作???a rel="external nofollow" target="_blank" style="background-color: rgb(255, 255, 255);">教程,試試看。您可以實現(xiàn)自己的 JobProxy,使 JobsResource 適應作業(yè)打包和部署模型的具體細節(jié)。
在驗證每個請求后,JobsResource 將調用相應的 JobProxy 命令。JobProxy 使用 InstallationFinder 枚舉已安裝的作業(yè)和 JobStatusProvider 來獲取作業(yè)的運行時狀態(tài)。
所提供的 SimpleInstallationFinder 會從文件系統(tǒng)中搜索,從 job.installations.path 尋找有效的 Samza 作業(yè)配置文件指定的目錄開始。它提取 job.name和job.id 屬性值,并為每個作業(yè)實例創(chuàng)建一個 InstallationRecord。InstallationRecord 包含啟動,停止和獲取作業(yè)狀態(tài)所需的所有信息。
提供的 YarnCliJobStatusProvider 利用 ScriptRunner 使用 Yarn ApplicationCLI 獲取作業(yè)狀態(tài)。
該 SimpleYarnJobProxy 依賴于 InstallationRecord scriptFilePath(腳本/bin)的目錄來啟動和停止作業(yè)。
以下是Samza REST附帶的實現(xiàn)描述:
JobsResource 屬性應該在與 Samza REST配置相同的文件中指定。為了清楚起見,這里是指定的。
名稱 | 描述 |
---|---|
job.proxy.factory.class | 必需:將用于創(chuàng)建作業(yè)代理以控制作業(yè)的作業(yè)代理工廠。該值是必須實現(xiàn)JobProxyFactory的完全限定類名稱。Samza配有一個實現(xiàn):org.apache.samza.rest.proxy.job.SimpleYarnJobProxy SimpleInstallationRecord與安裝在磁盤上的Samza作業(yè)交互的抽象。 |
job.installations.path | 必需:包含Samza作業(yè)安裝的文件系統(tǒng)路徑。路徑必須與Samza REST Service在同一主機上。每個安裝必須是一個目錄,其結構符合JobProxy使用的InstallationRecord實現(xiàn)的期望。 |
job.config.factory.class | 用于閱讀Samza作業(yè)配置的配置工廠。這用于獲取InstallationRecord中每個作業(yè)實例的job.name和job.id屬性。它還用于驗證安裝路徑中的特定目錄實際包含Samza作業(yè)。如果沒有指定 org.apache.samza.config.factories.PropertiesConfigFactory將會被使用。 |
更多建議: