本文介绍如何通过REST API管理云原生多模数据库 Lindorm计算引擎作业,包括创建、查看、终止Spark作业等操作。
前提条件
已开通计算引擎。如何开通,请参见开通与变配。
已完成作业开发。如何开发,请参见JAR作业开发实践或Python作业开发实践。
已将作业上传至HDFS或OSS。如何上传至HDFS,请参见通过控制台上传文件。
创建作业
在计算引擎中创建一个Spark作业。
语法
POST /api/{version}/lindorm/jobs/{token}
参数说明
参数类型 | 名称 | 类型 | 是否必填 | 示例值 | 说明 |
连接参数 | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 计算引擎JAR地址。如何获取,请参见查看计算引擎连接地址。 |
路径参数 | version | STRING | 是 | v1 | 系统规定参数,默认值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作业时用于进行计算资源鉴权的token。如何获取,请参见查看计算引擎token。 | |
请求体参数 | owner | STRING | 是 | myuser | Spark作业的所有者。可包含大写英文字符、小写英文字符,长度不超过64个字符。 |
name | STRING | 否 | sparkPi | Spark作业的名称。可包含大写英文字符、小写英文字符,长度不超过64个字符。 | |
username | STRING | 否 | root | 开启认证功能后用于用户认证的用户名。 | |
password | STRING | 否 | password | 开启认证功能后用于用户认证的用户密码。 | |
mainResourceKind | STRING | 是 | jar | Spark作业的执行文件的类型。 取值: | |
mainResource | STRING | 是 | hdfs://root/spark-examples_2.12-ldspark-3.1.3-SNAPSHOT.jar | Spark作业的执行文件的路径。 | |
mainArgs | LIST | 否 | [10] | Spark作业的执行参数。 | |
mainClass | STRING | 否 | org.apache.spark.examples.SparkPi | Spark作业的执行的类名。 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作业的配置参数。 |
请求体为JSON格式。
返回结果集说明
名称 | 类型 | 描述 |
jobId | STRING | 创建Spark作业的UUID。 |
token | STRING | Lindorm计算引擎用户令牌。 |
示例
示例1:JAR作业。
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" } }'
返回结果:
{"jobId":"9e48be0b-2801-4441-ab85-c8b718e2****","token":"bf198279-5d1f-4aca-97f7-d16eda2f****"}
示例2:Python作业
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" } }'
返回结果:
{"jobId":"44c614c240ce4e6f980a86e9e6db****","token":"bf198279-5d1f-4aca-97f7-d16eda2f****"}
示例3:SQL作业。
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" } }'
返回结果:
{"jobId":"f71ff7f963f545d89a7a79d6ffa8****","token":"bf198279-5d1f-4aca-97f7-d16eda2f****"}
查看作业
查看作业的详情信息,如:作业名字、状态、配置等。
语法
GET /api/{version}/lindorm/jobs/{token}/{jobId}
参数说明
参数类型 | 名称 | 类型 | 是否必填 | 示例值 | 说明 |
连接参数 | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 计算引擎JAR地址。如何获取,请参见查看计算引擎连接地址。 |
路径参数 | version | STRING | 是 | v1 | 系统规定参数,默认值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作业时用于进行计算资源鉴权的token。如何获取,请参见查看计算引擎token。 | |
jobId | STRING | 是 | 9e48be0b-2801-4441-ab85-c8b718e2**** | Spark作业的UUID。 |
返回结果集说明
名称 | 类型 | 说明 |
jobId | STRING | JobServer在Spark作业提交时,自动生成的UUID。 |
name | STRING | Spark作业名称。 |
state | STRING | Spark作业状态。取值说明:
|
owner | STRING | Spark作业的所有者。 |
mainResourceKind | STRING | Spark作业的执行文件类型。 取值: |
mainResource | STRING | Spark作业的执行文件路径。 重要 当 mainResourceKind为 |
mainArgs | LIST OF STRING | Spark作业的执行参数。 |
mainClass | STRING | Spark作业的执行的类名。 |
conf | MAP OF STRING | Spark作业的配置参数。 |
extraInfo | MAP OF STRING | Spark作业的额外信息。 |
createTime | LONG | Spark作业的创建时间。 |
finishTime | LONG | Spark作业的结束时间。state为 |
webUiUrl | STRING | Spark作业的WebUI地址。 |
eName | STRING | Spark作业的最后一个错误的名称。 |
eValue | STRING | Spark作业的最后一个错误的内容。 |
示例
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****'
返回结果:
{
"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
}
终止作业
终止正在运行的Spark作业。
语法
DELETE /api/{version}/lindorm/jobs/{token}/{jobId}
参数说明
参数类型 | 名称 | 类型 | 是否必填 | 示例值 | 说明 |
连接参数 | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 计算引擎JAR地址。如何获取,请参见查看计算引擎连接地址。 |
路径参数 | version | STRING | 是 | v1 | 系统规定参数,默认值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作业时用于进行计算资源鉴权的token。如何获取,请参见查看计算引擎token。 | |
jobId | STRING | 是 | 9e48be0b-2801-4441-ab85-c8b718e2**** | Spark作业的UUID。 |
示例
curl --request DELETE 'http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/bf1982795d1f4aca97f7d16eda2f****/9e48be0b-2801-4441-ab85-c8b718e2****'
结果验证:
您可以通过查看作业的状态(state)是否为已终止(killed)来验证语句是否执行成功。具体操作,请参见查看作业。
查看作业提交日志
查看目标作业提交的日志信息,用于自助排查作业提交失败相关问题。
语法
GET /api/{version}/lindorm/jobs/{token}/{jobId}/log?from={from}&size={size}
参数说明
参数类型 | 名称 | 类型 | 是否必填 | 示例值 | 说明 |
连接参数 | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 计算引擎JAR地址。如何获取,请参见查看计算引擎连接地址。 |
路径参数 | version | STRING | 是 | v1 | 系统规定参数,默认值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | 提交Spark作业时用于进行计算资源鉴权的token。如何获取,请参见查看计算引擎token。 | |
jobId | STRING | 是 | 9e48be0b-2801-4441-ab85-c8b718e2**** | Spark作业的UUID。 | |
查询参数 | from | INT | 是 | 0 | 查询分页的起始位置。默认值为 |
size | INT | 是 | 50 | 查询分页的大小。默认值为 |
返回结果集说明
名称 | 类型 | 说明 |
id | STRING | 日志所属作业的作业 ID。 |
from | STRING | 日志的起始行数,默认值 |
size | STRING | 返回的日志总行数。 |
log | ARRAY | 日志内容。值为一个字符串组成的数组,每一个元素都对应提交日志中的一行日志。 |
示例
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'
返回结果:
{
"id": "da2da5c2e432402babf400900803****",
"from": 0,
"size": 50,
"log": [
"The engine(da2da5c2e432402babf4009008032b15) was launched successfully.",
...,
"2024-01-01 00:00:00,000 Driver pod terminated successfully!"
]
}
查看历史作业列表
获取已提交到计算引擎的作业信息,包括名字、状态、配置等。
语法
GET /api/{version}/lindorm/jobs/{token}?from={from}&size={size}&startTime={startTime}&endTime={endTime}
参数说明
参数类型 | 名称 | 类型 | 是否必填 | 示例值 | 说明 |
连接参数 | endpoint | STRING | 是 | http://ld-bp1hn6yq0yb34****-proxy-ldps.lindorm.aliyuncs.com:10099 | 计算引擎JAR地址。如何获取,请参见查看计算引擎连接地址。 |
路径参数 | version | STRING | 是 | v1 | 系统规定参数,默认值 |
token | STRING | 是 | bf198279-5d1f-4aca-97f7-d16eda2f**** | Lindorm计算引擎用户令牌。 | |
查询参数 | from | INT | 是 | 0 | 数据起始位置。默认值为 |
size | INT | 是 | 50 | 查询分页的大小。默认值为 | |
startTime | LONG | 否 | 1645782797672 | Spark作业列表查询的起始时间。 | |
endTime | LONG | 否 | 1645782903713 | Spark作业列表查询的结束时间。 |
返回结果集说明
名称 | 类型 | 说明 |
jobId | STRING | JobServer在Spark作业提交时,自动生成的UUID。 |
name | STRING | Spark作业名称。 |
state | STRING | Spark作业状态。取值说明:
|
owner | STRING | Spark作业的所有者。 |
mainResourceKind | STRING | Spark作业的执行文件类型。 取值: |
mainResource | STRING | Spark作业的执行文件路径。 重要 当 mainResourceKind为 |
mainArgs | LIST OF STRING | Spark作业的执行参数。 |
mainClass | STRING | Spark作业的执行的类名。 |
conf | MAP OF STRING | Spark作业的配置参数。 |
extraInfo | MAP OF STRING | Spark作业的额外信息。 |
createTime | LONG | Spark作业的创建时间。 |
finishTime | LONG | Spark作业的结束时间。state为 |
webUiUrl | STRING | Spark作业的WebUI地址。 |
eName | STRING | Spark作业的最后一个错误的名称。 |
eValue | STRING | Spark作业的最后一个错误的内容。 |
示例
示例1:查看指定分页范围内的作业列表。
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'
返回结果:
{ "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:获取指定时间范围内的作业列表。
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'
返回结果:
{"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 } ] }