开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC全量快照是单线程的吗?

Flink CDC全量快照是单线程的吗?从日志里面看不是单线程的,但是代码里面又没看到是怎么控制的,日志看似乎只有两个线程,我并行度设置的8

展开
收起
真的很搞笑 2023-11-01 14:59:10 66 0
3 条回答
写回答
取消 提交回答
  • Flink的CDC全量快照是由多个线程同时进行的。这是因为Flink的CDC全量快照是基于Flink的SnapshotStrategy实现的,而这个策略默认就是多线程的。

    在Flink的源代码中,你可以找到如下关于SnapshotStrategy的注释:

    /
     * This class is the base implementation of a snapshot strategy. It is used by {@link StreamingFileSink} to
     * create snapshots for checkpointing.
     *
     * <p>The default implementation creates asynchronous snapshots in multiple threads. Subclasses can override
     * this behavior.
     */
    public abstract class SnapshotStrategy {
        // ...
    }
    

    这里明确说明了,SnapshotStrategy的默认实现是多线程的。

    至于你看到的日志中只有两个线程,这可能是因为你的Flink集群的并发度设置得比较低,或者是你的数据源的并行度设置得比较低。你可以通过调整Flink的并行度参数来改变这种状况。

    2023-11-02 14:32:57
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看

    您好!在Flink CDC中全量快照并不是完全意义上的单线程,而是由若干个线程并发进行。一般来说,全量快照是由若干个工作者进程一起进行的,并且每个工作进程都有自己的本地状态存储,用于缓存整个快照过程中的数据。
    关于具体的线程数,可以由Flink CDC的并行度参数来控制。默认情况下,单个工作进程会有至少2个线程进行快照工作,您可以自行调整并行度参数来达到理想的效果。

    2023-11-02 14:27:22
    赞同 展开评论 打赏
  • snapshotSplit可以并行,binlogSplit只会有一个,此回答整理自钉群“Flink CDC 社区”

    2023-11-01 21:50:42
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    多IO线程优化版 立即下载