Apache flink Flink-RocksDB中的localdir配置是什么?

Apache flink Flink-RocksDB中的localdir配置是什么?,apache-flink,rocksdb,stream-processing,Apache Flink,Rocksdb,Stream Processing,我是flink的新手,对状态后端配置有些困惑 据我所知,RocksDB将应用程序的所有状态保存在文件系统上。 我使用s3存储状态,因此我配置了指向s3存储桶的state.checkpoints.dir和state.savepoints.dir。 现在我看到了另一个与RocksDB存储相关的选项,称为state.backend.RocksDB.localdir。这样做的目的是什么?(我知道我不能使用s3) 另外,如果RocksDB使用本地机器存储进行某些操作,那么当我使用Kubernetes时,我

我是flink的新手,对状态后端配置有些困惑

据我所知,RocksDB将应用程序的所有状态保存在文件系统上。 我使用s3存储状态,因此我配置了指向s3存储桶的state.checkpoints.dir和state.savepoints.dir。 现在我看到了另一个与RocksDB存储相关的选项,称为state.backend.RocksDB.localdir。这样做的目的是什么?(我知道我不能使用s3) 另外,如果RocksDB使用本地机器存储进行某些操作,那么当我使用Kubernetes时,我的pod突然出现故障时会发生什么?我应该使用持久存储吗

还有一件事,我不确定我是否正确理解了所有州的事情。
检查点是否保存了我的所有状态?例如,当我使用AggregationFunction而应用程序失败时,当应用程序恢复时,是否恢复了每个键的聚合值?

Flink的每个状态后端都将其工作状态保持在每个工作者本地的某个位置,同时将检查点持久保存在某个位置,如S3。对于基于堆的状态后端,工作状态作为对象存储在JVM堆上,而对于RocksDB,工作状态作为序列化字节存储在本地磁盘上(具有内存内、堆外缓存)。出于性能原因,您不想将S3(甚至网络连接存储)用于
state.backend.rocksdb.localdir
。如果可以,请使用本地SSD存储


是的,如果应用程序失败,AggregationFunction中每个键的聚合值都将恢复。检查点包括所有内容,包括源和汇、窗口、计时器、ProcessFunctions、RichFunctions等保持的状态。

Flink的每个状态后端都将其工作状态保持在每个工作者本地的某个位置,同时将检查点保持在持久的某个位置,如S3。对于基于堆的状态后端,工作状态作为对象存储在JVM堆上,而对于RocksDB,工作状态作为序列化字节存储在本地磁盘上(具有内存内、堆外缓存)。出于性能原因,您不想将S3(甚至网络连接存储)用于
state.backend.rocksdb.localdir
。如果可以,请使用本地SSD存储


是的,如果应用程序失败,AggregationFunction中每个键的聚合值都将恢复。检查点包括所有内容,包括源和接收器、窗口、计时器、ProcessFunctions、RichFunctions等保存的状态。

谢谢,大卫!这是一个很好的答案:)@David Anderson,当我们删除K8s作业吊舱时,我们如何删除rocksdb文件夹?@David:我们可以假设如果localdir是吊舱的空dir,并且吊舱理论上发生故障,我们不应该丢失任何数据,因为检查点应该处理或重建丢失的状态。非常感谢David!这是一个很好的答案:)@David Anderson,当我们删除K8s作业吊舱时,我们如何删除rocksdb文件夹?@David:我们可以假设如果localdir是吊舱的空dir,并且吊舱在理论上发生故障,我们不应该丢失任何数据,因为检查点应该处理或重建丢失的状态。