运行 flink 程序时会经常需要查看当前程序的运行状况,flink 提供了 UI 界面,有比较详细的统计信息。但是 UI 界面也有不完善的地方,比如想要获取 flink 的实时吞吐。本文通过示例介绍通过 flink REST API 获取 flink 实时吞吐。
为了更简单的表示,以下的 REST API 请求都省略了 JobManager 的地址和端口(对于 flink on yarn 模式来说,则是省略了 RM 代理的 JobManager UI 地址,例如 http://yarn-resource-manager-ui/proxy/application_155316436xxxx_xxxx)。
1. 首先获取集群中的 job 列表
GET /v1/jobs
该接口返回集群中的 job 列表及运行状态。返回结果示例:
{
jobs: [{
id: "ce793f18efab10127f0626a37ff4b4d4",
status: "RUNNING"
}
]
}
对 run a single job with flink on yarn 模式来说,一般只有一个 RUNNING job,其 id 即为 “ce793f18efab10127f0626a37ff4b4d4”.
2. 获取 job 详情
# GET /v1/jobs/<jobid>
GET /v1/jobs/ce793f18efab10127f0626a37ff4b4d4
该接口返回 job 的详细信息。返回结果示例:
{
jid: "ce793f18efab10127f0626a37ff4b4d4",
name: "Test",
isStoppable: false,
state: "RUNNING",
start - time: 1551577191874,
end - time: -1,
duration: 295120489,
now: 1551872312363,
timestamps: {
CANCELLING: 0,
FAILED: 0,
RESTARTING: 1551577191874,
SUSPENDED: 0,
RUNNING: 1551577191896,
CANCELED: 0,
CREATED: 1551577191874,
RECONCILING: 0,
FINISHED: 0,
SUSPENDING: 0,
FAILING: 0
},
vertices: [{
id: "cbc357ccb763df2852fee8c4fc7d55f2",
name: "Source: Custom Source -> Flat Map",
parallelism: 12