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