-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请教个问题:这个connector可以在生产环境用吗? 主要是关于Debezium的快照,FlinkDatabaseHistory是否对机器的内存有大小要求? #47
Comments
@wuchong @PatrickRen 麻烦解答下?谢谢~ |
|
感觉这个connector很神奇,感觉比接kafka方便很多,我试用了下这个cdc-connector,实验环境里mysql两个表join打成一个宽表,看了下实验效果确实是会把历史数据与实时变更的数据都能打到宽表里。但看代码,在原理上有点没想通,为啥历史数据也会被join到,难道是我的实验环境里binlog是有全部的历史行数据和历史ddl变更导致的? 请问下: 2、如果能做,想问下,他们全量的历史数据(启动的时候,mysql表里的所有数据快照,select * from table)是怎么保存的或者说全量的历史数据怎么能输入到这个cdc conector里的,并能参与到后续的flink sql join操作里的。 问这个两个的主要原因是我的场景里,锁拿不到,业务表数据量也比较大。 所以想着能不能把存量数据与实时变更数据结合起来,想看看能不能改一下?(我们的场景可以不需要精确一次的语义的) |
|
1、锁权限(表锁或全局锁)dba有一套规范,不肯给。我感觉我们的场景下,表的schema基本不会做变更(频率很低,并且只要做变更都要做通知),应该也是可以直接跳过去获取锁?? 这里还有一个关于内存不懂的地方,当数据往事下游流的时候,基本上,就是过flink的各种算子或者是写的sql转成的算子了进行运算了。像我们这种几个表做join的打成宽表的场景,例如 // 输入表status // 输出宽表test_status // 计算出宽表 想问下jack, 数据往flink计算引擎流入的过程中,会做join打成宽表的逻辑,这里做join就会依赖的数据,比如status 一个id的name变化了,test_status相应的会有关联N条数据变化,这个join过程关联的N条test表数据是会怎么在flink计算引擎里保存的? @wuchong 望帮忙解答下,有没有哪方面的资源可以加深下理解的~ |
|
好的,结合你的讲解,再看看代码,感觉理解更深入了一步。整理下,拿上面的宽表场景,flink cdc join操作来看,串起来后,应该是这样? 2、若cdc connector 没有scan完,scan部分存量数据就失败了,因为没有checkpoint,所以任务重启的时候会重新scan数据。 另外目前试了下,cdc connector 在scan存量数据时好像效率有点低,4百万的存量数据,做这个宽表计算, 然后再存sql,实测要1个多小时。感觉有点慢,这里好像无解,看cdc connector 依赖的debezium单线程在读全表?? |
|
关于4, 用blackhole验证试了下,确实快了很多。在这个测试场景里,应该是下游慢反压了。 但总感觉这里的全量scan操作要是能并行就好了,就像jdbc connector一样,能依据某个column设置并行扫描('scan.partition.column' = '%s)会更快些~~ |
这里主要是要保证 snapshot 和 binlog offset 的一致性,所以只能单并发运行 :( |
假如在生产环境中,mysql中的单表比较大,比如10亿条,并且在不断增长。
FlinkDatabaseHistory中使用了ConcurrentLinkedQueue records来保存快照数据,
当快照数据较大时,是不是有跑不起来的风险或对机器有特殊要求?
`public class FlinkDatabaseHistory extends AbstractDatabaseHistory {
}
`
The text was updated successfully, but these errors were encountered: