当前位置:网站首页>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划分成多个部分,没有的话就是一个整体。。。。。。?
二、
目标下游表有唯一索引
边栏推荐
- [station B up dr_can learning notes] Kalman filter 1
- Chapter 2 Introduction to key technologies
- Office VR porn, coquettish operation! The father of Microsoft hololens resigns!
- 020 basics of C language: C language forced type conversion and error handling
- Quick sort (non recursive) and merge sort
- 微服务系统设计——微服务调用设计
- 【B站UP DR_CAN学习笔记】Kalman滤波1
- Building lightweight target detection based on mobilenet-yolov4
- Baidu PaddlePaddle's "universal gravitation" first stop in 2022 landed in Suzhou, comprehensively launching the SME empowerment plan
- 012 C语言基础:C数组
猜你喜欢

为什么 C# 访问 null 字段会抛异常?

Tri rapide (non récursif) et tri de fusion

math_ Number set (number set symbol) and set theory

nignx配置单ip限流

牛客练习赛101-C 推理小丑---位运算+思维

日志收集系统

leetcode-20. Valid parentheses -js version

QChart笔记2: 添加鼠标悬停显示
![[array]bm94 rainwater connection problem - difficult](/img/2b/1934803060d65ea9139ec489a2c5f5.png)
[array]bm94 rainwater connection problem - difficult

面对AI人才培养的“产学研”鸿沟,昇腾AI如何做厚产业人才黑土地?
随机推荐
Kotlin compose implicitly passes the parameter compositionlocalprovider
golang hello 安装环境异常【已解决】
Installing MySQL on Windows
渗透测试-文件上传/下载/包含
008 C language foundation: C judgment
MobileNet系列(4):MobileNetv3网络详解
机械转码日记【17】模板,STL简介
Tri rapide (non récursif) et tri de fusion
Microservice system design -- Distributed timing service design
pycharm 如何安装 package
Microservice system design -- service registration, discovery and configuration design
【NIPS 2017】PointNet++:度量空间中点集的深层次特征学习
006 C language foundation: C storage class
MySql最详细的下载教程
低代码开发平台NocoBase的安装
Microservice system design -- microservice invocation design
016 C语言基础:C语言枚举类型
006 C语言基础:C存储类
Office VR porn, coquettish operation! The father of Microsoft hololens resigns!
Redis高可用集群(哨兵、集群)