Flink - RocksDB 中的 localdir 配置是什么?
Flink - What is localdir configuration in RocksDB?
我是flink新手,对state后端配置有些迷惑
据我所知,RocksDB 将应用程序的所有状态保存在文件系统上。
我使用 s3 来存储状态,所以我配置了 state.checkpoints.dir 和 state.savepoints.dir 指向我的 s3 存储桶。
现在我看到还有另一个与 RocksDB 存储相关的选项,叫做 state.backend.rocksdb.localdir。这是什么目的?(我看到我不能为此使用 s3)
另外,如果 RocksDB 使用本地机器存储来做某事,当我使用 Kubernetes 并且我的 pod 突然失败时会怎样?我应该使用持久存储吗?
另一件事,我不确定我是否正确理解了所有状态。
检查点是否保存了我所有的状态?例如,当我使用 AggregationFunction 并且应用程序失败时,当应用程序恢复时,是否恢复了每个键的聚合值?
Flink 的每个状态后端都将其工作状态保存在每个 worker 本地的某个地方,同时将检查点持久保存在某个持久的地方,例如 S3。对于基于堆的状态后端,工作状态作为对象存储在 JVM 堆上,而对于 RocksDB,工作状态作为序列化字节存储在本地磁盘上(具有内存中的堆外缓存)。出于性能原因,您不想为 state.backend.rocksdb.localdir
使用 S3(甚至网络附加存储)。如果可以,请使用本地 SSD 存储。
Flink 不依赖本地 rocksdb 存储在故障中幸存,就像它不期望堆上的状态在故障中幸存一样,因此您可以安全地使用临时存储作为 rocksdb.localdir
。当确实需要恢复状态时,最新的检查点就足够了。 (但本地磁盘上的副本可以用作优化,避免需要从 DFS 读取:有关详细信息,请参阅 state.backend.local-recovery 上的文档。
在恢复期间,如果您的应用程序失败,AggregationFunction 中每个键的聚合值将被恢复。检查点包括所有内容,包括源和汇保持的状态、windows、计时器、ProcessFunctions、RichFunctions 等
我是flink新手,对state后端配置有些迷惑
据我所知,RocksDB 将应用程序的所有状态保存在文件系统上。 我使用 s3 来存储状态,所以我配置了 state.checkpoints.dir 和 state.savepoints.dir 指向我的 s3 存储桶。 现在我看到还有另一个与 RocksDB 存储相关的选项,叫做 state.backend.rocksdb.localdir。这是什么目的?(我看到我不能为此使用 s3) 另外,如果 RocksDB 使用本地机器存储来做某事,当我使用 Kubernetes 并且我的 pod 突然失败时会怎样?我应该使用持久存储吗?
另一件事,我不确定我是否正确理解了所有状态。 检查点是否保存了我所有的状态?例如,当我使用 AggregationFunction 并且应用程序失败时,当应用程序恢复时,是否恢复了每个键的聚合值?
Flink 的每个状态后端都将其工作状态保存在每个 worker 本地的某个地方,同时将检查点持久保存在某个持久的地方,例如 S3。对于基于堆的状态后端,工作状态作为对象存储在 JVM 堆上,而对于 RocksDB,工作状态作为序列化字节存储在本地磁盘上(具有内存中的堆外缓存)。出于性能原因,您不想为 state.backend.rocksdb.localdir
使用 S3(甚至网络附加存储)。如果可以,请使用本地 SSD 存储。
Flink 不依赖本地 rocksdb 存储在故障中幸存,就像它不期望堆上的状态在故障中幸存一样,因此您可以安全地使用临时存储作为 rocksdb.localdir
。当确实需要恢复状态时,最新的检查点就足够了。 (但本地磁盘上的副本可以用作优化,避免需要从 DFS 读取:有关详细信息,请参阅 state.backend.local-recovery 上的文档。
在恢复期间,如果您的应用程序失败,AggregationFunction 中每个键的聚合值将被恢复。检查点包括所有内容,包括源和汇保持的状态、windows、计时器、ProcessFunctions、RichFunctions 等