我正在尝试理解和管理Flink对本地存储的使用,因为我需要确保在没有加密的情况下不存储任何数据。
阅读文档,我可以看到
RocksDb可能会使用本地存储,以防状态变得太大而无法保存在内存中。
Flink使用本地fs以防内存中保存的数据变得太大(在批处理作业中进行大型聚合活动) http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html
是否还需要考虑使用本地存储的其他情况?上述两种情况中的文件夹似乎都由属性taskmanager.tmp.dirs
如果我想为包含加密的上述案例编写特定的数据序列化器/写入,是否有人可以指出我应该查看哪个类?
答案 0 :(得分:1)
自定义序列化的两个主要选项是创建Kryo serializer并注册它或创建一个完整的TypeInformation + TypeSerializer(Flink-native)。 Kryo更简单,因为您只需要提供to / from字节。
本身没有特别的考虑因素,请记住,这与检查点/保存点不同,后者也会转到文件系统(并使用相同的定义序列化)。使用RocksDB时,每次写入都将进行序列化,因此如果以这种方式设置,进入它的数据将被加密。
作为一个单独的注释,请记住,任何能够读取文件系统的人都有可能读取定义加密密钥的配置,除非您在远程启动时以某种方式将其传递给Flink(在这种情况下,我不确定Flink是否能够在没有额外特殊代码的情况下恢复状态)。