更新时间:2025-12-10 GMT+08:00
分享

配置Flink HistoryServer

本章节适用于MRS 3.6.0-LTS及以后版本。

Flink HistoryServer场景介绍

Flink可以通过日志来分析作业失败原因、失败算子和CheckPoint运行情况,但是作业失败前的运行状态不太直观,可通过HistoryServer直观的看到作业失败前的运行情况,包括查看具体失败的算子、流量情况、执行计划和CheckPoint完成情况等。

对于已经完成的作业,HistoryServer也能清晰的看到数据流量等内容,有利于问题的定位和Flink作业的维护。

Flink HistoryServer使用限制

  • HistoryServer只展示作业的运行情况,不展示具体日志。
  • HistoryServer只展示已归档且配置了归档路径(参考启动Flink HistoryServer配置)的作业,包括如下:
    • 运行失败的作业。
    • 通过Flink stop或者cancel命令停止的作业。
  • HistoryServer不展示未归档的作业,包括如下:
    • 通过yarn application直接结束的作业。
    • 在FlinkServer UI上单击“停止”、“删除”的作业。
    • 运行中的作业。

启动Flink HistoryServer

  1. 已安装集群客户端,例如安装目录为“/opt/hadoopclient”。
  2. 以客户端安装用户登录客户端所在节点,执行以下命令,切换到客户端安装目录。

    cd /opt/hadoopclient

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 如果当前集群已启用Kerberos认证(安全模式),执行以下命令认证用户。如果当前集群未启用Kerberos认证(普通模式),则无需执行此命令。

    kinit 组件业务用户

    例如,kinit flinkuser。

  5. 执行如下命令初始化环境变量。

    source /opt/hadoopclient/bigdata_env

  6. 在HDFS上手动创建用于作业归档的目录,并赋予相应的权限。例如属主可以设置为flink,属组为hadoop,权限为770。

    hdfs dfs -mkdir -p hdfs://hacluster/flink/history

    hdfs dfs -chmod 770 hdfs://hacluster/flink/history

    hdfs dfs -chown flink:hadoop hdfs://hacluster/flink/history

  7. 在“客户端安装目录/Flink/flink/conf/flink-conf.yaml”配置文件中新增如下参数并保存。

    表1 HistoryServer必选参数说明

    参数名称

    说明

    示例

    建议值

    historyserver.archive.fs.dir

    参考6创建目录,并以逗号分隔目录列表,用于获取存档作业。HistoryServer将监控这些目录中的存档作业。

    hdfs://hacluster/flink/history

    -

    historyserver.web.address

    HistoryServer WebUI地址。

    192.168.x.x

    建议使用本节点IP

    historyserver.web.port

    HistoryServer WebUI端口。

    32651

    32651-32661

    historyserver.web.tmpdir

    HistoryServer REST API用于临时文件的本地目录。

    /tmp

    建议配置路径:/opt/Bigdata/tmp

    以防止将/tmp路径空间占满

    表2 作业必选参数

    参数名称

    说明

    示例

    jobmanager.archive.fs.dir

    将已完成的作业信息上传到文件系统目录中。

    只有配置了此参数,作业才会归档,没有配置的作业无法在HistoryServer查看。

    值必须与historyserver.archive.fs.dir设置的值相同。

    HistoryServer是根据该路径下归档的文件来获取作业状态的。

    hdfs://hacluster/flink/history

    表3 HistoryServer可选参数说明

    参数名称

    说明

    默认值

    建议值

    historyserver.archive.clean-expired-jobs

    是否应清理不再存在于historyserver.archive.fs.dir的作业。

    false

    false

    historyserver.archive.fs.refresh-interval

    刷新存档工作目录的间隔(毫秒)。

    10000

    10000

    historyserver.archive.retained-jobs

    historyserver.archive.fs.dir定义的每个存档目录中要保留的作业的最大数量。如果设置为-1(默认),则存档数量没有限制。如果设置为0或小于-1,HistoryServer将抛出“IllegalConfigurationException”。

    -1

    -1

    historyserver.log.jobmanager.url-pattern

    JobManager的日志URL配置。配置后可以通过URL跳转到JobManager日志,要求有日志归档服务,Flink本身并不提供已完成作业的日志收集功能。

    -

    -

    historyserver.log.taskmanager.url-pattern

    任务管理器的日志URL配置。配置后可以通过URL跳转到TaskManager日志,要求有日志归档服务,Flink本身并不提供已完成作业的日志收集功能。

    -

    -

    historyserver.web.refresh-interval

    HistoryServer网络前端的刷新间隔(毫秒)。

    10000

    10000

    historyserver.web.ssl.enabled

    启用HTTP访问HistoryServer网络前端。只有当全局SSL标志“security.ssl.enabled”设为“true”时才适用。

    false

    false

  8. 在“/opt/hadoopclient/Flink/flink/bin”目录下执行如下命令启动HistoryServer。

    ./historyserver.sh start

  9. 通过日志查看HistoryServer是否启动成功。

    cd /opt/hadoopclient/Flink/flink/log

    查看“flink-root-historyserver-xxx.log”日志,日志中无报错且可以看到打印“Web frontend listening at[ip]:port”说明HistoryServer启动成功。

  10. 登录HistoryServer页面。在浏览器输入“http://historyserver.web.address:historyserver.web.port”登录HistoryServer页面,如“192.168.x.x:8082”。

安全模式需要修改“客户端安装目录/Flink/flink/conf/flink-conf.yaml”配置文件中的“jobmanager.web.allow-access-address”的配置,添加要访问HistoryServer页面的机器IP,才能正常访问页面。

HistoryServer API调用介绍

HistoryServer启动后,提供了如下API请求,使用方法如下:

  • API调用格式:

    http://hostname:port/jobs/<jobid>/请求类型

  • API调用示例,如作业jobid为“7684be6004e4e955c2a558a9bc463f65”的exceptions请求:

    http://hostname:port/jobs/7684be6004e4e955c2a558a9bc463f65/exceptions

HistoryServer接口调用类型

可用接口:

  • /config
  • /jobs/overview
  • /jobs/<jobid>
  • /jobs/<jobid>/vertices
  • /jobs/<jobid>/config
  • /jobs/<jobid>/exceptions
  • /jobs/<jobid>/accumulators
  • /jobs/<jobid>/vertices/<vertexid>
  • /jobs/<jobid>/vertices/<vertexid>/subtasktimes
  • /jobs/<jobid>/vertices/<vertexid>/taskmanagers
  • /jobs/<jobid>/vertices/<vertexid>/accumulators
  • /jobs/<jobid>/vertices/<vertexid>/subtasks/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
  • /jobs/<jobid>/jobmanager/config
  • /jobs/<jobid>/jobmanager/environment
  • /jobs/<jobid>/jobmanager/log-url
  • /jobs/<jobid>/taskmanagers/<taskmanagerid>/log-url

相关文档