通過REST API管理作業(yè)
本文介紹如何通過REST API管理云原生多模數(shù)據(jù)庫 Lindorm計算引擎作業(yè),包括創(chuàng)建、查看、終止Spark作業(yè)等操作。
前提條件
已開通計算引擎。如何開通,請參見開通與變配。
已完成作業(yè)開發(fā)。如何開發(fā),請參見JAR作業(yè)開發(fā)實踐或Python作業(yè)開發(fā)實踐。
已將作業(yè)上傳至HDFS或OSS。如何上傳至HDFS,請參見通過控制臺上傳文件。
創(chuàng)建作業(yè)
在計算引擎中創(chuàng)建一個Spark作業(yè)。
語法
POST /api/{version}/lindorm/jobs/{token}
參數(shù)說明
參數(shù)類型 | 名稱 | 類型 | 是否必填 | 示例值 | 說明 |
連接參數(shù) | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 計算引擎JAR地址。如何獲取,請參見查看計算引擎連接地址。 |
路徑參數(shù) | version | STRING | 是 | v1 | 系統(tǒng)規(guī)定參數(shù),默認(rèn)值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作業(yè)時用于進(jìn)行計算資源鑒權(quán)的token。如何獲取,請參見查看計算引擎token。 | |
請求體參數(shù) | owner | STRING | 是 | myuser | Spark作業(yè)的所有者。可包含大寫英文字符、小寫英文字符,長度不超過64個字符。 |
name | STRING | 否 | sparkPi | Spark作業(yè)的名稱。可包含大寫英文字符、小寫英文字符,長度不超過64個字符。 | |
username | STRING | 否 | root | 開啟認(rèn)證功能后用于用戶認(rèn)證的用戶名。 | |
password | STRING | 否 | password | 開啟認(rèn)證功能后用于用戶認(rèn)證的用戶密碼。 | |
mainResourceKind | STRING | 是 | jar | Spark作業(yè)的執(zhí)行文件的類型。 取值: | |
mainResource | STRING | 是 | hdfs://root/spark-examples_2.12-ldspark-3.1.3-SNAPSHOT.jar | Spark作業(yè)的執(zhí)行文件的路徑。 | |
mainArgs | LIST | 否 | [10] | Spark作業(yè)的執(zhí)行參數(shù)。 | |
mainClass | STRING | 否 | org.apache.spark.examples.SparkPi | Spark作業(yè)的執(zhí)行的類名。 mainResourceKind為jar時需要指定。 | |
conf | MAP | 否 | {"spark.kubernetes.container.image":"spark-repo-registry.cn-hangzhou.cr.aliyuncs.com/lindorm-compute/spark-py:3.2.1-ldspark-1.0.2"} | Spark作業(yè)的配置參數(shù)。 |
請求體為JSON格式。
返回結(jié)果集說明
名稱 | 類型 | 描述 |
jobId | STRING | 創(chuàng)建Spark作業(yè)的UUID。 |
token | STRING | Lindorm計算引擎用戶令牌。 |
示例
示例1:JAR作業(yè)。
curl --location --request POST 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****' --header 'Content-Type: application/json' --data '{ "owner":"myuser", "name":"sparkPi", "mainResourceKind": "jar", "mainResource":"hdfs://root/spark-examples_2.12-ldspark-3.1.3-SNAPSHOT.jar", "mainArgs":[10], "mainClass":"org.apache.spark.examples.SparkPi", "conf":{ "spark.kubernetes.container.image":"spark-repo-registry.cn-hangzhou.cr.aliyuncs.com/lindorm-compute/spark-py:3.2.1-ldspark-1.0.2" } }'
返回結(jié)果:
{"jobId":"9e48be0b-2801-4441-ab85-c8b718e2****","token":"bf198279-5d1f-4aca-97f7-d16eda2f****"}
示例2:Python作業(yè)
curl --location --request POST 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****' --header 'Content-Type: application/json' --data '{ "owner":"myuser", "name":"pythonJob", "mainResourceKind":"python", "mainResource":"hdfs:///ldps-launcher.py", "mainArgs":[10], "conf":{ "spark.submit.pyFiles":"hdfs:///ldps-user-resource/your-project.zip" } }'
返回結(jié)果:
{"jobId":"44c614c240ce4e6f980a86e9e6db****","token":"bf198279-5d1f-4aca-97f7-d16eda2f****"}
示例3:SQL作業(yè)。
curl --location --request POST 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****' --header 'Content-Type: application/json' --data '{ "owner":"root", "name":"sqljob", "mainResourceKind":"sql", "mainResource":"show databases;", "conf":{ "spark.dynamicAllocation.enabled":"false", "spark.executor.instances":"1" } }'
返回結(jié)果:
{"jobId":"f71ff7f963f545d89a7a79d6ffa8****","token":"bf198279-5d1f-4aca-97f7-d16eda2f****"}
查看作業(yè)
查看作業(yè)的詳情信息,如:作業(yè)名字、狀態(tài)、配置等。
語法
GET /api/{version}/lindorm/jobs/{token}/{jobId}
參數(shù)說明
參數(shù)類型 | 名稱 | 類型 | 是否必填 | 示例值 | 說明 |
連接參數(shù) | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 計算引擎JAR地址。如何獲取,請參見查看計算引擎連接地址。 |
路徑參數(shù) | version | STRING | 是 | v1 | 系統(tǒng)規(guī)定參數(shù),默認(rèn)值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作業(yè)時用于進(jìn)行計算資源鑒權(quán)的token。如何獲取,請參見查看計算引擎token。 | |
jobId | STRING | 是 | 9e48be0b-2801-4441-ab85-c8b718e2**** | Spark作業(yè)的UUID。 |
返回結(jié)果集說明
名稱 | 類型 | 說明 |
jobId? | STRING | JobServer在Spark作業(yè)提交時,自動生成的UUID。 |
name | STRING | Spark作業(yè)名稱。 |
state | STRING | Spark作業(yè)狀態(tài)。取值說明:
|
?owner | STRING | Spark作業(yè)的所有者。 |
mainResourceKind | STRING | Spark作業(yè)的執(zhí)行文件類型。 取值: |
mainResource? | STRING | Spark作業(yè)的執(zhí)行文件路徑。 重要 當(dāng) mainResourceKind為 |
mainArgs? | LIST OF STRING | Spark作業(yè)的執(zhí)行參數(shù)。 |
mainClass | STRING | Spark作業(yè)的執(zhí)行的類名。 |
conf | MAP OF STRING | Spark作業(yè)的配置參數(shù)。 |
extraInfo | MAP OF STRING | Spark作業(yè)的額外信息。 |
createTime? | LONG | Spark作業(yè)的創(chuàng)建時間。 |
finishTime? | LONG | Spark作業(yè)的結(jié)束時間。state為 |
webUiUrl? | STRING | Spark作業(yè)的WebUI地址。 |
eName? | STRING | Spark作業(yè)的最后一個錯誤的名稱。 |
eValue | STRING | Spark作業(yè)的最后一個錯誤的內(nèi)容。 |
示例
curl --request GET 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****/9e48be0b-2801-4441-ab85-c8b718e2****'
返回結(jié)果:
{
"jobId": "9e48be0b-2801-4441-ab85-c8b718e2****",
"name": "SelectSQL",
"state": "success",
"owner": "test",
"mainResourceKind": "sql",
"mainResource": "oss://root/select.sql",
"mainArgs": [],
"mainClass": null,
"conf": {
"spark.kubernetes.container.image":"spark-repo-registry.cn-hangzhou.cr.aliyuncs.com/lindorm-compute/spark-py:3.2.1-ldspark-1.0.2"
},
"extraInfo":{
"driverLogs.stdout":"hdfs:///ldspark/ldspark-logs/20de0c0d74984f9abbe5c013703aa8ee/__driver_logs__/stdout",
"driverLogs.stderr":"hdfs:///ldspark/ldspark-logs/20de0c0d74984f9abbe5c013703aa8ee/__driver_logs__/stderr"
},
"createTime": 1644921672038,
"finishTime": 1644921782540,
"webUiUrl": "alb-xrfbl0guar69vc****.cn-shanghai.alb.aliyuncs.com/proxy/spark-0c075e4a045d491096f2f782e32*****",
"eName": null,
"eValue": null
}
終止作業(yè)
終止正在運行的Spark作業(yè)。
語法
DELETE /api/{version}/lindorm/jobs/{token}/{jobId}
參數(shù)說明
參數(shù)類型 | 名稱 | 類型 | 是否必填 | 示例值 | 說明 |
連接參數(shù) | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 計算引擎JAR地址。如何獲取,請參見查看計算引擎連接地址。 |
路徑參數(shù) | version | STRING | 是 | v1 | 系統(tǒng)規(guī)定參數(shù),默認(rèn)值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作業(yè)時用于進(jìn)行計算資源鑒權(quán)的token。如何獲取,請參見查看計算引擎token。 | |
jobId | STRING | 是 | 9e48be0b-2801-4441-ab85-c8b718e2**** | Spark作業(yè)的UUID。 |
示例
curl --request DELETE 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf1982795d1f4aca97f7d16eda2f****/9e48be0b-2801-4441-ab85-c8b718e2****'
結(jié)果驗證:
您可以通過查看作業(yè)的狀態(tài)(state)是否為已終止(killed)來驗證語句是否執(zhí)行成功。具體操作,請參見查看作業(yè)。
查看作業(yè)提交日志
查看目標(biāo)作業(yè)提交的日志信息,用于自助排查作業(yè)提交失敗相關(guān)問題。
語法
GET /api/{version}/lindorm/jobs/{token}/{jobId}/log?from={from}&size={size}
參數(shù)說明
參數(shù)類型 | 名稱 | 類型 | 是否必填 | 示例值 | 說明 |
連接參數(shù) | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 計算引擎JAR地址。如何獲取,請參見查看計算引擎連接地址。 |
路徑參數(shù) | version | STRING | 是 | v1 | 系統(tǒng)規(guī)定參數(shù),默認(rèn)值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作業(yè)時用于進(jìn)行計算資源鑒權(quán)的token。如何獲取,請參見查看計算引擎token。 | |
jobId | STRING | 是 | 9e48be0b-2801-4441-ab85-c8b718e2**** | Spark作業(yè)的UUID。 | |
查詢參數(shù) | from | INT | 是 | 0 | 查詢分頁的起始位置。默認(rèn)值為 |
size | INT | 是 | 50 | 查詢分頁的大小。默認(rèn)值為 |
返回結(jié)果集說明
名稱 | 類型 | 說明 |
id? | STRING | 日志所屬作業(yè)的作業(yè) ID。 |
from | STRING | 日志的起始行數(shù),默認(rèn)值 |
size | STRING | 返回的日志總行數(shù)。 |
log | ARRAY | 日志內(nèi)容。值為一個字符串組成的數(shù)組,每一個元素都對應(yīng)提交日志中的一行日志。 |
示例
curl --request GET 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****/9e48be0b-2801-4441-ab85-c8b718e2****/log?from=0&size=50'
返回結(jié)果:
{
"id": "da2da5c2e432402babf400900803****",
"from": 0,
"size": 50,
"log": [
"The engine(da2da5c2e432402babf4009008032b15) was launched successfully.",
...,
"2024-01-01 00:00:00,000 Driver pod terminated successfully!"
]
}
查看歷史作業(yè)列表
獲取已提交到計算引擎的作業(yè)信息,包括名字、狀態(tài)、配置等。
語法
GET /api/{version}/lindorm/jobs/{token}?from={from}&size={size}&startTime={startTime}&endTime={endTime}
參數(shù)說明
參數(shù)類型 | 名稱 | 類型 | 是否必填 | 示例值 | 說明 |
連接參數(shù) | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 計算引擎JAR地址。如何獲取,請參見查看計算引擎連接地址。 |
路徑參數(shù) | version | STRING | 是 | v1 | 系統(tǒng)規(guī)定參數(shù),默認(rèn)值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | Lindorm計算引擎用戶令牌。 | |
查詢參數(shù) | from | INT | 是 | 0 | 數(shù)據(jù)起始位置。默認(rèn)值為 |
size | INT | 是 | 50 | 查詢分頁的大小。默認(rèn)值為 | |
startTime | LONG | 否 | 1645782797672 | Spark作業(yè)列表查詢的起始時間。 | |
endTime | LONG | 否 | 1645782903713 | Spark作業(yè)列表查詢的結(jié)束時間。 |
返回結(jié)果集說明
名稱 | 類型 | 說明 |
jobId? | STRING | JobServer在Spark作業(yè)提交時,自動生成的UUID。 |
name | STRING | Spark作業(yè)名稱。 |
state | STRING | Spark作業(yè)狀態(tài)。取值說明:
|
?owner | STRING | Spark作業(yè)的所有者。 |
mainResourceKind | STRING | Spark作業(yè)的執(zhí)行文件類型。 取值: |
mainResource? | STRING | Spark作業(yè)的執(zhí)行文件路徑。 重要 當(dāng) mainResourceKind為 |
mainArgs? | LIST OF STRING | Spark作業(yè)的執(zhí)行參數(shù)。 |
mainClass | STRING | Spark作業(yè)的執(zhí)行的類名。 |
conf | MAP OF STRING | Spark作業(yè)的配置參數(shù)。 |
extraInfo | MAP OF STRING | Spark作業(yè)的額外信息。 |
createTime? | LONG | Spark作業(yè)的創(chuàng)建時間。 |
finishTime? | LONG | Spark作業(yè)的結(jié)束時間。state為 |
webUiUrl? | STRING | Spark作業(yè)的WebUI地址。 |
eName? | STRING | Spark作業(yè)的最后一個錯誤的名稱。 |
eValue | STRING | Spark作業(yè)的最后一個錯誤的內(nèi)容。 |
示例
示例1:查看指定分頁范圍內(nèi)的作業(yè)列表。
curl --request GET 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****?from=0&size=50'
返回結(jié)果:
{ "total":2, "overviews": [ { "jobId": "eec44231-bf13-4b43-8594-16933010****", "name": "sparkPi", "state": "success", "owner": "root", "mainResourceKind": "jar", "mainResource": "oss://root/spark-examples_2.12-ldspark-3.1.3-SNAPSHOT.jar", "mainArgs": [ "10" ], "mainClass": "org.apache.spark.examples.SparkPi", "conf": {}, "createTime": 1645782797672, "finishTime": 1645782903713, "webUiUrl": "http://alb-xrfbl0guar69vc****.cn-shanghai.alb.aliyuncs.com/proxy/spark-8f4d3d91c42a4a72abc456641170****", "eName": null, "eValue": null }, { "jobId": "fc0c0d27-d589-42f6-8186-3a6f0946****", "name": "SelectSQL", "state": "success", "owner": "test", "mainResourceKind": "sql", "mainResource": "oss://root/select.sql", "mainArgs": [], "mainClass": null, "conf": {}, "extraInfo":{ "driverLogs.stdout":"hdfs:///ldspark/ldspark-logs/20de0c0d74984f9abbe5c013703aa8ee/__driver_logs__/stdout", "driverLogs.stderr":"hdfs:///ldspark/ldspark-logs/20de0c0d74984f9abbe5c013703aa8ee/__driver_logs__/stderr" }, "createTime": 1644921672038, "finishTime": 1644921782540, "webUiUrl": "alb-xrfbl0guar69vc****.cn-shanghai.alb.aliyuncs.com/proxy/spark-0c075e4a045d491096f2f782e32*****", "eName": null, "eValue": null } ] }
示例2:獲取指定時間范圍內(nèi)的作業(yè)列表。
curl --request GET 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf198279-5d1f-4aca-97f7-d16eda2f****?jobName=computegroup1&startTime=1715596286971&endTime=1715667358400'
返回結(jié)果:
{"total":1, "overviews": [ {"jobId":"b9a80bd230234666ad9e4901af92****", "name":"JDBC_SERVER_kyuubi_computegroup1", "state":"success", "owner":"test1", "mainResourceKind":"test1", "mainResource":"SparkSQLEngine", "mainArgs":[], "mainClass":null, "conf":{}, "extraInfo":{"resource.usage.current":"0","resource.usage.total":"145.9744"}, "createTime":1715651403742, "finishTime":null, "webUiUrl":"http://alb-qsj79bel0lg7e0****.cn-hangzhou.alb.aliyuncs.com/history/b9a80bd230234666ad9e4901af90****/jobs", "eName":null, "eValue":null } ] }