2.概述
一个Flink worker 进程会因多种原因将数据存储到本地文件系统,包括:
- 接收application JAR 文件
- 写日志文件
- (若是配置了RocksDB为state backend)维护application state
与磁盘相关的配置项有 io.tmp.dirs,我们可以指定一个或多个文件夹(以冒号为分隔符),用于存储数据到本地文件系统。默认情况下,数据会写入到默认的临时文件夹(由Java 的 java.io.tmpdir 指定)或是Linux的临时文件夹(/tmp)。
需要注意的是:请确保临时目录不会被自动清除,有些Linux 发行版会自动清除临时文件夹/tmp。请务必关闭此功能,否则会在job recovery时,由于/tmp文件夹被清理,导致丢失metadata,并最终job 失败。
blob.storage.directory 的参数指定了blob server的本地存储文件夹,用于exchange较大的文件(例如application JAR 文件)。env.log.dir 的参数指定的是TaskManager写入日志的文件夹。最后,RocksDB state backend 会将application的state维持在本地文件系统中。此目录由state.backend.rocksdb.localdir 参数指定。如果此配置文件未显示指定,则RocksDB会使用io.tmp.dirs 参数的值。