由于我关心的内容主要为Flink的调度、运行的核心组件,为了降低IDEA的检索压力,可以注释掉更多不需要的模块,减少打包内容,让我的小笔记本也能编译,具体可以见GitHub Commit。
因为在搭建集群的过程中需要使用一个分布式文件系统,突然好奇Flink是怎么支持不同的文件系统的。这个问题可以从Flink运行配置参数的state.savepoints.dir
或者state.checkpoints.dir
开始研究。
首先全局搜索state.checkpoints.dir
,找到其定义在CheckpointingOptions.java中:
查找CHECKPOINT_DIRECTORY
的使用,可以找到在FileSystemCheckpointStorage.java中使用该值来构建一个FileSystemCheckpointStorage
:
找到最终执行的构造函数,checkpointDir
最终被用来构造ExternalizedSnapshotLocation
(在这个过程中String
的