更新时间:2024-08-03 GMT+08:00

Flink REST API接口介绍

Flink具有可用于查询正在运行的作业的状态和统计信息以及最近完成作业的监视API。该监视API由Flink自己的WEB UI使用。

监视API是REST API,可接受HTTP GET请求并使用JSON数据进行响应。REST API是访问Web服务器的一套API。当前在Flink中,Web服务器是JobManager的一个模块,和JobManager共进程。默认情况下,web服务器监测的端口是8081,用户可以在配置文件“flink-conf.yaml”中配置“jobmanager.web.port”来修改监测端口。

使用Netty和Netty路由器库来处理REST请求和解析URL。

REST API接口的执行方式是通过HTTP请求进行。

HTTP请求的格式为:http://<JobManager_IP>:<JobManager_Port><Path>,

其中JobManager_IP是指JobManager进程所在服务器节点的IP地址,JobManager_Port是指JobManager进程的监测端口,Path为路径的部分,参见表1。例如:http://10.162.181.57:32261/config。

需要修改Flink Client的配置文件“flink-conf.yaml”,在“jobmanager.web.allow-access-address”“jobmanager.web.access-control-allow-origin”中添加访问主机的IP地址,可使用逗号分隔。

Flink支持的所有REST API的URL中的Path信息如表1所示。

表1 Path介绍

Path

说明

/config

有关监控API和服务器设置的一些信息。

/logout

注销的重要信息。

/overview

Flink集群状态的简单概要。

/jobs

Job的ID,按运行,完成,失败和取消等状态进行分组。

/jobmanager/config

JobManager的配置。

/joboverview

业务按状态进行分组,每个业务组都有一个小状态。

/joboverview/running

与“/ joboverview”相同,Job按状态进行分组,每个Job组都有一个小状态,但只包含当前运行的Job。

/joboverview/completed

Job按状态进行分组,每个都有一个小状态的摘要。 与“/ joboverview”相同,但仅包含已完成,已取消或失败的Job。

/jobs/<jobid>

一个Job主要信息包含列出数据流计划,状态,状态转换的时间戳,每个顶点(运算符)的聚合信息。

/jobs/<jobid>/vertices

目前与“/jobs/<jobid>”相同。

/jobs/<jobid>/config

Job使用用户定义的执行配置。

/jobs/<jobid>/exceptions

Job探察到不可恢复的异常。截取的标识提示是否存在更多异常,但不列出这些异常,否则回复会太大。

/jobs/<jobid>/accumulators

聚合用户累加器加上Job累加器。

/jobs/<jobid>/checkpoints

Job的checkpoint的统计信息。

/jobs/<jobid>/metrics

一个Job的所有可用指标。

/jobs/<jobid>/vertices/<vertexid>

关于流图的顶点下每个子任务的信息。

/jobs/<jobid>/vertices/<vertexid>/subtasktimes

请求返回流图的顶点的所有子任务状态转换的时间戳。 这些可以用于在子任务之间创建时间线的比较。

/jobs/<jobid>/vertices/<vertexid>/taskmanagers

一个流图顶点的TaskManager统计信息。 这是“/ jobs / <jobid> / vertices / <vertexid>”返回的子任务统计信息的聚合。

/jobs/<jobid>/vertices/<vertexid>/accumulators

聚合的用户定义的累加器,用于流图顶点。

/jobs/<jobid>/vertices/<vertexid>/checkpoints

单个Job顶点的检查点统计信息。

/jobs/<jobid>/vertices/<vertexid>/backpressure

单个Job顶点的背压统计数据及其所有子任务。

/jobs/<jobid>/vertices/<vertexid>/metrics

一组指标值的给定任务。

/jobs/<jobid>/vertices/<vertexid>/subtasks/accumulators

获取流图顶点的所有子任务的所有用户定义的累加器。 这些是通过请求“/ jobs / <jobid> / vertices / <vertexid> / accumulators”以聚合形式返回的各个累加器。

/jobs/<jobid>/vertices/<vertexid>/subtasks/<subtasknum>

特定子任务的当前或最近执行尝试的摘要。

/jobs/<jobid>/vertices/<vertexid>/subtasks/<subtasknum>/attempts/<attempt>

特定子任务的具体执行尝试的摘要。 发生故障/恢复时会发生多次执行尝试。

/jobs/<jobid>/vertices/<vertexid>/subtasks/<subtasknum>/attempts/<attempt>/accumulators

在一次特定的执行尝试期间,为一个特定子任务收集累加器(在发生故障/恢复时会发生多次尝试)。

/jobs/<jobid>/plan

Job的数据流计划。 该计划也包括在Job摘要(“/ jobs / <jobid>”)中。

/taskmanagers

任务管理员信息。

/taskmanagers/<taskmanagerid>/metrics

任务管理员的度量信息。

/taskmanagers/<taskmanagerid>/log

任务管理员的日志信息。

/taskmanagers/<taskmanagerid>/stdout

一个任务管理员的标准。

/jobmanager/log

JobManager的日志信息。

/jobmanager/stdout

JobManager的标准。

/jobmanager/metrics

JobManager的指标。

/:*

对Web前端的静态文件(如HTML,CSS或JS文件)的请求。

表1中变量的介绍请参见表2

表2 变量说明

变量

说明

jobid

job的id

vertexid

流图的顶点id

subtasknum

子任务的总和

attempt

尝试

taskmanagerid

任务管理的id