当前位置:网站首页>Flink生产问题(1.10)
Flink生产问题(1.10)
2022-06-27 04:55:00 【今天好好洗头了嘛】
1、TaskManager OOM
发生地点:发生在flink到mysql两阶段提交阶段
原因①由于checkpoint间隔时间有5秒钟,保存的数据量大,以及没有把json数据中的无效数据去除
原因②flink默认内存分配,会把一部分内存分配给托管内存,但是我代码中没有用到rocksDB状态后端,所以不需要这部分内存,需要调整一下参数增大堆内存taskmanager.memory.managed.fraction=0
2、OOM GC时重启TaskManager
由于gc时间长,导致JobManager到TaskManager的心跳断开,此时重启另一个TaskManager,此时就会有启动时间的浪费。需要调整一下参数增加心跳延迟时间heartbeat.timeout=300000
3、通信问题
由于资源过少,导致jvm未能及时响应,影响到TM和JM的通信,此时需要调整一下超时时间akka.ask.timeout=500 s web.timeout=500000
4、业务问题
目前的业务场景:
一、
①上游kafka有多个partition,每个partition中的数据是通过canal监控mysql的binlog日志得来的,并且数据是以表的hash值进行分配到不同partition中的。所以每一个表的变更数据一定是在某个kafka的partition中是有序的。
②此时我们的需求是,有序的把每个表的增量数据同步到下游mysql(下游mysql表中会多三个字段,canal的id,数据的es,数据的类型),比如,如果是insert操作,则下游mysql也执行一次upsert操作,此时保存的数据为上游json数据中的data数据,此时类型为insert;如果是update操作,则下游mysql也执行一次upsert操作,此时保存的数据为上游json数据中的data数据,类型为update;如果是delete操作,则下游mysql也执行一次upsert操作,此时保存的数据为上游json数据中的old数据,类型为delete;
如果有上游有ddl变更,则下游也执行一次ddl变更。
③从上述场景得出,我们必须需要顺序的去消费每个表的变更数据,但是这样就会导致一个问题,subtask分配数据不均匀,因为有的表变更消息多,有的表变更消息少,所以通过表的hash值分配到不同partition中的数据会不一样,导致flink消费时,每个并行度的数据也不均匀。
④如果上游没有ddl变更消息,我们可以通过表名+主键对数据进行keyby,尽量使得数据更分散一些。
⑤思考:现在的业务场景,因为有ddl变更,我们如何把每个subtask的数据更加均匀一些?
d->c->ddl->b->a
把ddl之前数据进行keyby
把ddl之后数据进行keyby
相当于一批一批的处理,
先根据表名keyby,在每个窗口攒一批数据,然后判断这批数据里有没有ddl,有的话根据ddl划分成多个部分,没有的话就是一个整体。。。。。。?
二、
目标下游表有唯一索引
边栏推荐
- 快速掌握 ASP.NET 身份认证框架 Identity - 通过邮件重置密码
- 022 C语言基础:C内存管理与C命令行参数
- Halon common affine transformation operators
- Building lightweight target detection based on mobilenet-yolov4
- 深潜Kotlin协程(十五):测试 Kotlin 协程
- Baidu PaddlePaddle's "universal gravitation" first stop in 2022 landed in Suzhou, comprehensively launching the SME empowerment plan
- Redis高可用集群(哨兵、集群)
- Microservice system design - service fusing and degradation design
- pycharm 如何安装 package
- 系统架构设计——互联网金融的架构设计
猜你喜欢

微服务系统设计——API 网关服务设计

Microservice system design -- distributed transaction service design

渗透测试-目录遍历漏洞

nignx配置单ip限流

差点因为 JSON.stringify 丢了奖金...

Microservice system design -- service registration, discovery and configuration design

论文解读(LG2AR)《Learning Graph Augmentations to Learn Graph Representations》

微服务系统设计——消息缓存服务设计

Penetration test - file upload / download / include

How to make ef core 6 support dateonly type
随机推荐
016 C language foundation: C language enumeration type
【B站UP DR_CAN学习笔记】Kalman滤波1
018 C语言基础:C文件读写
EPICS记录参考5 -- 数组模拟输入记录Array Analog Input (aai)
跟着BUU学习Crypto(周更)
Nignx configuring single IP current limiting
快速排序(非递归)和归并排序
缓存综合项目--秒杀架构
关于元器件封装的一些文章和一下我的体会
math_数集(数集符号)和集合论
真xx相来了?测试/开发程序员为什么不愿意加班,这是个疯狂的状态......
微服务系统设计——消息缓存服务设计
Learn crypto from Buu (Zhou Geng)
010 C语言基础:C函数
笔记本电脑没有WiFi选项 解决办法
014 C language foundation: C string
AcWing 第 57 场周赛---BC题挺好
[station B up dr_can learning notes] Kalman filter 1
007 basics of C language: C operator
为什么 C# 访问 null 字段会抛异常?