配置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
- 已安装集群客户端,例如安装目录为“/opt/hadoopclient”。
- 以客户端安装用户登录客户端所在节点,执行以下命令,切换到客户端安装目录。
cd /opt/hadoopclient
- 执行以下命令配置环境变量。
source bigdata_env
- 如果当前集群已启用Kerberos认证(安全模式),执行以下命令认证用户。如果当前集群未启用Kerberos认证(普通模式),则无需执行此命令。
kinit 组件业务用户
例如,kinit flinkuser。
- 执行如下命令初始化环境变量。
source /opt/hadoopclient/bigdata_env
- 在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
- 在“客户端安装目录/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
- 在“/opt/hadoopclient/Flink/flink/bin”目录下执行如下命令启动HistoryServer。
./historyserver.sh start
- 通过日志查看HistoryServer是否启动成功。
cd /opt/hadoopclient/Flink/flink/log
查看“flink-root-historyserver-xxx.log”日志,日志中无报错且可以看到打印“Web frontend listening at[ip]:port”说明HistoryServer启动成功。
- 登录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请求,使用方法如下:
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