【问题标题】:Apache flink: Lazy load from save point for RocksDB backendApache flink:从 RocksDB 后端的保存点延迟加载
【发布时间】:2020-04-23 12:24:09
【问题描述】:

我们希望将 Apache Flink 与 RocksDB 后端 (HDFS) 一起用于有状态流处理。但是,我们的应用程序状态(键控状态)将以 TB 为单位。

据我了解,当我们从保存点恢复作业时,所有操作员状态数据都将从 HDFS 上的保存点位置传送到每个任务管理器。如果状态是 TB 级,那么如果所有这些状态都需要转移,那么每次部署都会导致很长的停机时间。

我想了解,如果是 RocksDB,是否可以配置延迟加载,其中在需要时从 HDFS 检索 keyed state,然后缓存在本地磁盘上。

谢谢!

【问题讨论】:

    标签: apache-flink flink-streaming rocksdb


    【解决方案1】:

    如果你使用 RocksDB 并配置你的 Flink 集群使用本地恢复,你可以阅读 here,那么 RocksDB 文件的副本将保存在每个任务管理器的本地磁盘上,恢复几乎是立即的(除了必须启动的任何新节点)。

    但是,这并不真正适用于保存点,因为这种机制需要增量快照才能真正发挥作用。

    您可能想阅读整个文档页面,大约是 how to configure and tune applications that use large amounts of state

    【讨论】:

    • 嗨@大卫安德森:谢谢你的回复。我浏览了您链接的文档,但似乎没有关于部署和保存点的任何具体内容。 . 《使用 Apache Flink 进行流处理》一书提到:“用户报告了利用 RocksDBStateBackend 的状态大小为数 TB 的应用程序”这是否意味着这些用户在部署期间会经历数小时的停机时间?或者有什么办法可以减少这个持续时间。
    • 许多状态巨大的用户没有使用保存点进行部署。出于您指出的原因,他们正在使用外部检查点。
    • 哦,谢谢,我不知道外部检查点!但是根据:ci.apache.org/projects/flink/flink-docs-release-1.3/setup/…,如果我们使用外部检查点,我们似乎永远无法在集群中添加或删除节点?并行性必须保持不变。 (它说:外部化检查点......不支持 Flink 特定功能,如重新缩放)。
    • 当时我们不想提交与重新缩放兼容的外部检查点,但它们确实如此,并且我们已经放松了在这一点上的立场。
    • 我不这么认为。
    猜你喜欢
    • 1970-01-01
    • 2017-11-19
    • 2020-05-03
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多