Flink的常见问题诊断思路是什么

发布时间:2022-01-04 15:20:08 作者:柒染
来源:亿速云 阅读:125

Flink的常见问题诊断思路是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.常见运维问题

1.1 作业运行环境

文中介绍的作业运行环境主要是在阿里巴巴集团内,构建在 Hadoop 生态之上的 Flink 集群,包含 Yarn、HDFS、ZK 等组件;作业提交模式采用 yarn per-job Detached 模式。

Flink的常见问题诊断思路是什么

■ 资源申请方式

  1. 指定资源大小
    提交时,指定每个 TaskManager、JobManager 使用多少内存,CPU 资源。

  2. 细粒度资源控制
    阿里巴巴集团内主要采用 ResourceSpec 方式指定每个 Operator 所需的资源大小,依据 task 的并发聚合成 container 资源向 Yarn 申请。

■  环境高可用

  1. JM 高可用,AppMaster(JobManager) 异常后,可以通过 Yarn 的 APP attempt 与 ZooKeeper 机制来保证高可用;

  2. 数据高可用,作业做 checkpoint 时,TaskManager 优先写本地磁盘,同时异步写到 HDFS;当作业再次启动时可以从 HDFS 上恢复到上次 checkpoint 的点位继续作业流程。

1.2 为什么我的作业延时了?

■ 时间类型

■ 延时定义

自定义 Source 源解析中加入 Gauge 类型指标埋点,汇报如下指标:

  1. 记录最新的一条数据中的 event time,在汇报指标时使用当前系统时间 - event time。

  2. 记录读取到数据的系统时间-数据中的 event time,直接汇报差值。

delay = 当前系统时间 – 数据事件时间(event time) 

说明:反应处理数据的进度情况。

fetch_delay = 读取到数据的系统时间- 数据事件时间(event time)

说明:反应实时计算的实际处理能力。

■ 延时分析

Flink的常见问题诊断思路是什么

1.3 为什么我的作业 failover 了?

■ 作业 failover 主要分为两大类

Flink的常见问题诊断思路是什么

Flink Failover 主要有两类,一类是 Job ManagerFailover,还有一类是 Task ManagerFailover

1.4 作业无法提交、异常停止

■ 无法提交

■ 异常停止-指标监控无法覆盖

2.处理方式

2.1 延时问题处理方式

Flink的常见问题诊断思路是什么

■ 延时与吞吐

Flink的常见问题诊断思路是什么

■ 反压

■ 指标

Flink的常见问题诊断思路是什么

■ 堆栈

在 TaskManager 所在节点,查看线程 TID、CPU 使用情况,确定是 CPU,还是 IO 问题。


ps H -p ${javapid} -o user,pid,ppid,tid,time,%cpu,cmd
#转换为16进制后查看tid具体堆栈jstack ${javapid} > jstack.log

■ 常见处理方式

Flink的常见问题诊断思路是什么

  1. 增加反压节点的并发数。

  2. 调整节点资源,增加 CPU,内存。

  3. 拆分节点,将 chain 起来的消耗资源较多的 operator 拆分。

  4. 作业或集群优化,通过主键打散,数据去重,数据倾斜,GC 参数,Jobmanager 参数等方式调优。

2.2 作业 failover 分析

Flink的常见问题诊断思路是什么

3.作业生命周期

3.1 作业状态变化-JobStatus

Flink的常见问题诊断思路是什么

上图中可以看到作业的整个状态转换。从作业创建、到运行、失败,重启,成功等整个生命周期。

这里需要注意的是 reconciling 的状态,这个状态表示 yarn 中 AppMaster 重新启动,恢复其中的 JobManager 模块,这个作业会从 created 进入到 reconciling 的状态,等待其他 Taskmanager 汇报,恢复 JobManager 的 failover,然后从 reconciling 再到正常 running。

3.2 Task 状态变化 -ExecutionState

Flink的常见问题诊断思路是什么

上图是作业的 Task 状态转换,需要注意的是,作业状态处于 running 状态时,并不意味着作业一定在运行消费信息。在流式计算中只有等所有的 task 都在 running 时,作业才算真正运行。

通过记录作业各个阶段的状态变化,形成生命周期,我们能很清楚地展示作业是什么时候开始运行、什么时候失败,以及 taskmanager failover 等关键事件,进一步能分析出集群中有多少个作业正在运行,形成 SLA 标准。

4.工具化经验

4.1 指标

Flink的常见问题诊断思路是什么

如何去衡量一个作业是否正常?

4.2 日志

Flink的常见问题诊断思路是什么

4.3 关联分析

  1. 作业指标/事件 - Taskmanager,JobManager

  2. Yarn 事件 - 资源抢占,NodeManager Decommission

  3. 机器异常 - 宕机、替换

  4. Failover 日志聚类

在做了这些指标和日志的处理之后,可以对各组件的事件进行关联,比如说当 TaskManager failover 时,有可能是因为机器的异常。也可以通过 Flink 作业解析 Yarn 的事件,关联作业与 Container 资源抢占,NodeManager 下线的事件等。

关于Flink的常见问题诊断思路是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. DataPipeline的常见问题和解题思路
  2. 常见功能点测试思路

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

flink

上一篇:S/4HANA透明工厂原型状态的映射怎么实现

下一篇:JS的script标签属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》