Apache flink Flink何时使用本地存储

Apache flink Flink何时使用本地存储,apache-flink,Apache Flink,我正试图理解和管理Flink对本地存储的使用,因为在我的用例中,我需要确保没有加密就不会存储任何数据 通过阅读文档,我可以看到 RocksDb可能会使用本地存储,以防状态变得太大而无法保存在内存中 Flink使用本地fs以防存储在内存中的数据增长过大(例如,在执行大型聚合活动的批处理作业中) 在使用本地存储时,是否还需要考虑其他情况?上述两种情况下的文件夹似乎都是由属性taskmanager.tmp.dirs 是否有人可以告诉我,如果我想为上述包含加密的案例编写特定的数据序列化程序/写入,

我正试图理解和管理Flink对本地存储的使用,因为在我的用例中,我需要确保没有加密就不会存储任何数据

通过阅读文档,我可以看到

  • RocksDb可能会使用本地存储,以防状态变得太大而无法保存在内存中

  • Flink使用本地fs以防存储在内存中的数据增长过大(例如,在执行大型聚合活动的批处理作业中)

在使用本地存储时,是否还需要考虑其他情况?上述两种情况下的文件夹似乎都是由属性
taskmanager.tmp.dirs


是否有人可以告诉我,如果我想为上述包含加密的案例编写特定的数据序列化程序/写入,我应该看哪个类?

自定义序列化的两个主要选项是创建并注册或创建完整的(Flink native)。Kryo one更简单,因为您只需提供to/from字节

无需特别考虑,请记住,这与检查点/保存点不同,检查点/保存点也会进入文件系统(并使用相同的已定义序列化)。使用RocksDB,它的每次写入都将经过序列化,因此,如果您以这种方式进行设置,则进入其中的数据将被加密


另外,请记住,任何可以读取文件系统的人都很有可能也可以读取定义加密密钥的配置,除非您在启动时以某种方式远程将其传递给Flink(在这种情况下,我不确定Flink是否能够在无需额外特殊代码的情况下恢复状态)

非常感谢Joshua提供的信息和链接。这证实了我最初的想法。其思想是对每个租户的数据进行加密,数据流的数据源将提供一个包含该对象所属租户信息的对象,并使用该信息从安全服务检索密钥并加密数据。由于每个租户的密钥都是唯一的,这也应该解决您最后一个问题:我不确定Flink是否能够在没有额外特殊代码的情况下恢复状态只是为了澄清您的第二段:您的意思是,如果我编写Kyro序列化程序,也会覆盖检查点/保存点,或者?是的,检查点/保存经过定义的序列化。确定它是否实际使用您定义的序列化的最佳方法是在env中禁用泛型类型