使用

  1. ExecutionEnvironment.registerCachedFile
  2. pipeline.cached-files

session模式上传BlobServer、PerJob模式直接上传HDFS。

何为BlobServer

Flink JobManager运行时的一个组件,用来管理大文件的。

为什么要有BlobServer

BlobServer的工作原理

BlobServer

FileSystemBlobStore

BlobCache

Session模式下,Job结束后。BlobServer会把Job所属的Blob文件删除

源码

Client

pipeline.cached-files 中的参数会
通过StreamGraphGenerator设置到StreamGraph#userArtifacts中
通过StreamingJobGraphGenerator设置到JobGraph#userArtifacts

上传文件PerJob 和 Remote Session模式不一样�

JobManager

Session 模式 Dispatcher会调用ClientUtils.uploadJobGraphFiles上传文件到BlobServer
�Dispatcher DispatcherRestEndpoint

BlobServer是一个线程

TaskManager

Task#doRun()
BlobCacheService

Task#doRun() 调用 DistributedCache.readFileInfoFromConfig 根据配置将二进制文件放置到Task的分布式缓存中。
如果有blobKey从BlobServer中拷贝,如果没有则从本地文件系统拷贝