REST API

Rest API 设计用于作业、配置和集群管理。

分布式加载

提前将UFS数据加载到worker中缓存,避免冷读对用户产生性能影响。

提交或恢复加载作业

方法

路径

参数

请求体类型

POST

/api/v1/load

Content-Type: application/json

参数

名称

类型

必填

描述

示例

index

string

ufs 上的索引文件路径(必须已挂载)

'{"index": s3://bucket/key}'

paths

string

要加载的 ufs 路径列表

'{"paths": ["s3://bucket/key1", "s3://bucket/key2"]}'

alias

string

和paths组合使用,供后续状态查询

'{"paths": ["s3://bucket/key1", "s3://bucket/key2"], "alias": "database1"}'

options

object

配置加载作业的选项

'{"index": s3://bucket/key, "options":{"batchSize":10}}'

其中,indexpaths二选一. paths可以指定alias,否则内部随机生成alias返回用户。

可以使用 options 来配置加载作业的选项。可选字段有:

名称

类型

必填

描述

batchSize

int

worker从 ufs 加载数据的批处理大小

replicas

int

加载文件副本数,默认值config中设置对应路径副本或1

skipIfExists

bool

如果文件已存在,则跳过加载过程.

loadPolicy

enum

目前仅支持 IF_CHANGED。如果文件已更改,则更新文件。

loadMetadataOnly

bool

仅加载文件元数据。

示例

一个 JSON 请求负载示例如下:

正常返回示例:json格式

错误码

http状态码

错误码

描述

200

OK

操作成功

400

Bad Request

请求没有正文或缺少必需字段

409

Conflict

已经存在相同的job被调度,拒绝新任务的提交

500

Internal Server Error

意外错误

获取加载作业进度

方法

路径

参数

请求体类型

GET

/api/v1/load

参数:

名称

类型

必填

描述

示例

target

string

提交job时返回字段信息

target=job-95e8a01f-d519-4c1a-8311-26714f4db623

fileList

bool

获取加载文件列表

target=job-95e8a01f-d519-4c1a-8311-26714f4db623&fileList=true

fileStatus

string

文件列表类型[TOTAL|FAILURE]

target=job-95e8a01f-d519-4c1a-8311-26714f4db623&fileList=true&fileStatus=TOTAL

注:3.7查询参数依然兼容, 例如:alias,index

示例 获取任务执行状态正常返回示例:json格式

获取任务列表正常返回示例:json格式

错误码

http状态码

错误码

描述

200

OK

操作成功

404

Not Found

任务不存在

500

Internal Server Error

意外错误

停止加载作业

方法

路径

参数

请求体类型

DELETE

/api/v1/load

Content-Type: application/json

参数:

名称

类型

必填

描述

示例

target

string

提交job时返回字段信息

{"target":"job-95e8a01f-d519-4c1a-8311-26714f4db623"}

注:3.7停止参数依然兼容, 例如:alias,index

错误码

http状态码

错误码

描述

200

OK

操作成功

400

Bad Request

请求没有正文或缺少必需字段

404

Not Found

加载作业不存在

410

Gone

加载作业已完成

列举加载作业列表

方法

路径

参数

请求体类型

GET

/api/v1/load

参数:

名称

类型

必填

描述

state

enum

作业状态[RUNNING|SUCCEEDED|FAILED|ALL]

lastKey

string

从当前作键开始列举作业

count

int

预期列出的作业数量

注:没有参数将会列举所有job

错误码

http状态码

错误码

描述

200

OK

操作成功

响应 一个正常列举的响应:json格式

释放缓存

将worker缓存数据清理,释放缓存存储空间

提交或恢复释放作业

方法

路径

参数

请求体类型

POST

/api/v1/free

Content-Type: application/json

参数

名称

类型

必填

描述

示例

index

string

ufs 上的索引文件路径(必须已挂载)

'{"index": s3://bucket/key}'

paths

string

要释放的 ufs 路径列表

'{"paths": ["s3://bucket/key1", "s3://bucket/key2"]}'

alias

string

和paths组合使用,供后续状态查询

'{"paths": ["s3://bucket/key1", "s3://bucket/key2"], "alias": "database1"}'

options

object

配置加载作业的选项

'{"index": s3://bucket/key, "options":{"batchSize":10}}'

其中,index和paths二选一。paths可以指定alias,否则内部随机生成alias返回用户。

可以使用 options JSON 来配置释放作业的选项。所有选项都是可选的。可能的配置有:

名称

类型

必填

描述

batchSize

int

worker每秒钟释放缓存文件的速度

replicas

int

释放文件副本的数量,仅在释放文件的时候有效

indexService

bool

释放目录缓存

示例

一个 JSON 请求负载示例如下:

正常返回示例:json格式

错误码

http状态码

错误码

描述

200

OK

操作成功

400

Bad Request

请求没有正文或缺少必需字段

409

Conflict

已经存在相同的job被调度,拒绝新任务的提交

500

Internal Server Error

意外错误

获取释放作业的进度

方法

路径

参数

请求体类型

GET

/api/v1/free

参数:

名称

类型

必填

描述

示例

target

string

提交job时返回字段信息

target=job-95e8a01f-d519-4c1a-8311-26714f4db623

注:3.7查询参数依然兼容, 例如:alias,index

示例 获取任务执行状态正常返回示例:json格式

} ```

错误码

http状态码

错误码

描述

200

OK

操作成功

404

Not Found

任务不存在

停止释放作业

方法

路径

参数

请求体类型

DELETE

/api/v1/free

Content-Type: application/json

参数:

名称

类型

必填

描述

示例

target

string

提交job时返回字段信息

{"target":"job-95e8a01f-d519-4c1a-8311-26714f4db623"}

注:3.7停止参数依然兼容, 例如:alias,index

错误码

http状态码

错误码

描述

200

OK

操作成功

400

Bad Request

请求没有正文或缺少必需字段

404

Not Found

加载作业不存在

410

Gone

加载作业已完成

列出所有释放作业

方法

路径

参数

请求体类型

GET

/api/v1/free

参数:

名称

类型

必填

描述

示例

state

enum

作业状态[RUNNING|SUCCEEDED|FAILED|ALL]

lastKey

string

从当前作键开始列举作业

count

int

预期列出的作业数量

注:没有参数将会列举所有job

错误码

http状态码

错误码

描述

200

OK

操作成功

响应 一个正常列举的响应:json格式

重新平衡

列出所有重新平衡作业

方法: GET

路径: /api/v1/rebalance

参数:

响应:

  • 200 - OK:操作成功

    有关作业描述的更多信息,请参阅 “获取重新平衡作业的进度”

  • 500 - Internal Server Error:意外错误

获取重新平衡作业的进度

方法: GET

路径: /api/v1/rebalance

参数:

最多需要一个参数。

名称

描述

id

POST 返回的作业 ID

target

重新平衡作业的目标工作节点,可以是工作节点 ID(例如 worker-54b88939-de49-46ef-acab-fe489f46d1a0)或 ALL(表示所有工作节点)

响应:

  • 200 - OK:操作成功(空值将被省略)

  • 404 - Not Found:未找到作业

  • 500 - Internal Server Error:意外错误

提交或恢复重新平衡作业

方法: POST

路径: /api/v1/rebalance

参数:

请求体: Content-Type: application/json

必需字段

名称

描述

target

重新平衡作业的目标工作节点,可以是工作节点 ID(例如 worker-54b88939-de49-46ef-acab-fe489f46d1a0)或 ALL(表示所有工作节点)

可以使用 options JSON 来配置加载作业的选项。所有选项都是可选的。可能的配置有:

名称

描述

loadBatchSize

加载阶段的批处理大小,与加载作业中的 batchSize 选项相同

loadBandwidth

每个工作节点每秒的加载带宽(字节)。例如:10485746000...

pruneBandwidth

每个工作节点每秒的修剪带宽(字节)。例如:10485746000...

skipPrune

如果重新平衡应仅加载数据并跳过修剪不属于该工作节点的数据

一个 JSON 请求负载示例如下:

响应:

  • 200 - OK:操作成功

  • 400 - Bad Request:请求没有正文或缺少必需字段

  • 409 - Conflict:使用相同路径恢复加载作业并返回先前的作业 ID

  • 500 - Internal Server Error:意外错误

停止重新平衡作业

方法: DELETE

路径: /api/v1/rebalance

参数:

请求体: Content-Type: application/json

最多需要一个参数。

名称

描述

id

POST 返回的作业 ID

target

重新平衡作业的目标工作节点,可以是工作节点 ID(例如 worker-54b88939-de49-46ef-acab-fe489f46d1a0)或 ALL(表示所有工作节点)

响应:

  • 200 - OK:操作成功

  • 400 - Bad Request:请求没有正文或缺少必需字段

  • 410 - Gone:作业不存在或已完成

  • 500 - Internal Server Error:意外错误

清理过时缓存

此操作与释放缓存操作的不同之处在于:

  1. 释放作业需要一个文件或目录列表作为输入参数,以指定要从工作节点中释放的内容。清理过时缓存操作不需要此类输入,因为“过时缓存”是通过扫描工作节点缓存存储并查询当前的一致性哈希环来自动确定的。

  2. 释放作业需要设置正确的副本数,否则如果启用了文件复制,它可能会释放比预期少的副本。清理过时缓存操作只是向集群中的所有工作节点广播,因此它总是触发所有工作节点上的过时缓存清理,无论有多少副本。

开始清理过时缓存

方法: POST

路径: /api/v1/cache

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK:一个空的错误对象表示操作已成功提交给所有工作节点执行

  • 200 - OK:非空的错误对象表示操作未能提交给至少一个工作节点执行

  • 400 - Bad Request:请求没有正文或缺少必需字段

  • 500 - Internal Server Error:意外错误

  • 501 - Not Implemented:指定的操作类型未实现

停止清理过时缓存

方法: DELETE

路径: /api/v1/cache

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK:一个空的错误对象表示所有工作节点都已成功收到停止清理过时缓存的通知

  • 200 - OK:非空的错误对象表示Coordinator未能通知至少一个工作节点停止清理过时缓存

  • 400 - Bad Request:请求没有正文或缺少必需字段

  • 500 - Internal Server Error:意外错误

  • 501 - Not Implemented:指定的操作类型未实现

挂载表

列出挂载点

方法: GET

路径: /api/v1/mount

参数:

响应:

  • 200 - OK:操作成功(如果为空,将省略选项)

  • 500 - Internal Server Error:意外错误

获取挂载点信息

方法: GET

路径: /api/v1/mount

参数:

名称

描述

path

挂载点的 alluxio 路径

响应:

  • 200 - OK:操作成功(如果为空,将省略选项)

  • 404 - Not Found:未找到挂载点

  • 500 - Internal Server Error:意外错误

创建挂载点

方法: POST

路径: /api/v1/mount

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK:操作成功

  • 400 - Bad Request:请求没有正文或缺少必需字段

  • 409 - Conflict:该路径已挂载,或 UFS 已挂载到另一个路径

  • 501 - Not Implemented:挂载表不支持通过 API 进行管理(例如:静态文件挂载表)

  • 500 - Internal Server Error:意外错误

删除挂载点

方法: DELETE

路径: /api/v1/mount

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK:操作成功

  • 400 - Bad Request:请求没有正文或缺少必需字段

  • 410 - Gone:该路径未挂载到任何 UFS

  • 501 - Not Implemented:挂载表不支持通过 API 进行管理(例如:静态文件挂载表)

  • 500 - Internal Server Error:意外错误

配额

列出所有配额状态

方法: GET

路径: /api/v1/quota

参数:

响应:

  • 200 - OK:操作成功

  • 501 - Not Implemented:未启用配额

  • 500 - Internal Server Error:意外错误

获取配额状态

方法: GET

路径: /api/v1/quota

参数:

名称

描述

path

数据的 alluxio 路径

响应:

  • 200 - OK:操作成功

  • 404 - Not Found: 未找到配额

  • 501 - Not Implemented: 未启用配额

  • 500 - Internal Server Error: 意外错误

添加或更新配额

方法: POST

路径: /api/v1/quota

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必需字段

  • 400 - Bad Request: 该路径未指向已挂载的 UFS,但必须与现有的 UFS绑定

  • 501 - Not Implemented: 未启用配额

  • 500 - Internal Server Error: 意外错误

删除配额

方法: DELETE

路径: /api/v1/quota

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: :请求没有正文或缺少必填字段

  • 400 - Bad Request: 未找到配额或其他问题

  • 501 - Not Implemented: 未启用配额

  • 500 - Internal Server Error: 意外错误

TTL

列出所有 TTL 策略

方法: GET

路径: /api/v1/ttl

参数:

响应:

  • 200 - OK: 操作成功

  • 501 - Not Implemented: 未启用TTL 策略

  • 500 - Internal Server Error: 意外错误

获取 TTL 策略

方法: GET

路径: /api/v1/ttl

参数:

名称

描述

path

数据的 alluxio 路径

响应:

  • 200 - OK: 操作成功

  • 404 - Not Found: 未找到TTL

  • 501 - Not Implemented: 未启用TTL 策略

  • 500 - Internal Server Error: 意外错误

添加或更新 TTL

方法: POST

路径: /api/v1/ttl

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必填字段

  • 400 - Bad Request: 路径未指向已挂载的 UFS,但必须与现有的 UFS绑定

  • 501 - Not Implemented: 未启用 TTL 策略

  • 500 - Internal Server Error: 意外错误

删除 TTL

方法: DELETE

路径: /api/v1/ttl

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必填字段

  • 400 - Bad Request: 未找到TTL

  • 501 - Not Implemented: 未启用 TTL 策略

  • 500 - Internal Server Error: 意外错误

优先级驱逐

列出所有优先级驱逐策略

方法: GET

路径: /api/v1/priority

参数:

响应:

  • 200 - OK: 操作成功

  • 501 - Not Implemented: 未启用优先级驱逐

  • 500 - Internal Server Error: 意外错误

获取优先级驱逐策略

方法: GET

路径: /api/v1/priority

参数:

名称

描述

path

数据的 alluxio 路径

响应:

  • 200 - OK: 操作成功

  • 404 - Not Found: 未找到优先级驱逐策略

  • 501 - Not Implemented: 未启用优先级驱逐

  • 500 - Internal Server Error: 意外错误

添加或更新优先级

方法: POST

路径: /api/v1/priority

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必填字段

  • 400 - Bad Request: 优先级字符串格式错误或存在其他问题

  • 501 - Not Implemented: 未启用优先级驱逐

  • 500 - Internal Server Error: 意外错误

删除优先级策略

方法: DELETE

路径: /api/v1/priority

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必填字段

  • 501 - Not Implemented: 未启用优先级驱逐

  • 500 - Internal Server Error: 意外错误

节点管理

列出所有节点

方法: GET

路径: /api/v1/nodes

参数:

响应:

  • 200 - OK: 操作成功

  • 500 - Internal Server Error: 意外错误

查询节点

方法: GET

路径: /api/v1/nodes

参数:

名称

描述

id

worker id (e.g. worker-587899dd-5da5-45d4-af40-ce481acc4087)

响应:

  • 200 - OK: 操作成功 (空值将被省略)

  • 404 - Not Found: 未找到worker

  • 500 - Internal Server Error: 意外错误

注销节点(从 etcd 中移除节点)

方法: DELETE

路径: /api/v1/nodes

参数:

名称

描述

id

worker id (e.g. worker-587899dd-5da5-45d4-af40-ce481acc4087)

响应:

  • 200 - OK: 操作成功

  • 404 - Not Found: 未找到worker

  • 500 - Internal Server Error: 意外错误

全局文件索引

列出所有节点

方法: GET

路径: /api/v1/file_index

参数:

响应:

  • 200 - OK: 操作成功

  • 500 - Internal Server Error:意外错误

将文件添加到全局文件索引

方法: POST

路径: /api/v1/file_index

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功(已添加条目数)

  • 404 - Not Found: 功能未启用

  • 500 - Internal Server Error: 意外错误

从全局文件索引中移除文件

方法: DELETE

路径: /api/v1/file_index

参数:

请求体: Content-Type: application/json

响应:

  • 200 - OK: 操作成功(已移除条目数)

  • 404 - Not Found: 功能未启用

  • 500 - Internal Server Error: 意外错误

缓存过滤

列出所有缓存过滤规则

方法: GET

路径: /api/v1/cache-filter

参数:

响应:

  • 200 - OK: 操作成功

  • 500 - Internal Server Error: 意外错误

  • 501 - Not Implemented: 未启用缓存过滤

添加缓存过滤规则或更新默认规则

方法: POST

路径: /api/v1/cache-filter

参数:

请求体: Content-Type: application/json

如果规则是 maxAge, 则需要指定 time

如果要更新默认规则,请设置 updateDefault。无需指定 pattern ,因为所有未匹配其他规则的路径都将由默认规则捕获。

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必填字段

  • 500 - Internal Server Error: 意外错误

  • 501 - Not Implemented: 未启用缓存过滤

移除缓存过滤规则

方法: DELETE

路径: /api/v1/cache-filter

参数:

请求体: Content-Type: application/json

如果规则是maxAge.,无需指定time。此外,默认规则无法删除,只能将默认规则更改为其他规则。

响应:

  • 200 - OK: 操作成功

  • 400 - Bad Request: 请求没有正文或缺少必填字段

  • 500 - Internal Server Error: 意外错误

  • 501 - Not Implemented: 未启用缓存过滤

Last updated