美文网首页Flink专题
Flink Job上传的jar包保存在哪里

Flink Job上传的jar包保存在哪里

作者: 尼小摩 | 来源:发表于2019-05-24 16:46 被阅读0次

    通过 flink UI dashboard提交的 jar 存储在哪个目录下? 一直都有疑惑,之前没做深入的了解,这个问题不解决感觉心里总在惦记着。今天就跟我一起来探寻一下其中的套路吧。

    Google大法好

    找到了一条关于 Flink Upload Issue, 内容如下:

    这不正是想要的么,赶紧看下这哥们儿submit的代码:

    打开Flink1.8源码,搜索“jobmanager.web.upload.dir”

    点击搜索结果,进入到具体实现类中,

    代码中提示 jobmanager.web.upload.dir 配置已经过期了,被 WebOptions 类中的 UPLOAD_DIR 配置所替代。 继续跟进 WebOptions 类:

    注意看注释,大体意思:该配置参数定义了上传 Job jar 包的目录。如果没有配置,则使用JOB_MANAGER_WEB_TMPDIR_KEY指定的目录。

    继续从源码中搜索JOB_MANAGER_WEB_TMPDIR_KEY

    进去源码中看看

    我晕,又过期啦,emmmmm.... 。继续跟进 WebOptions

    从代码中可以看到,如果配置了web.tmpdir则会替代掉默认配置java.io.tmpdir

    服务器配置信息

    web.tmpdir 的是由 java.io.tmpdir + “flink-web-” + UUID 组成的!

    默认情况下,Job重启后就会删除掉之前上传的jar包。生产环境玩肯定是不行的,所以我们还是要指定一个目录来存储所有的上传 jar 包,并且不能够被删除,要配置固定的目录(Flink 重启也不删除的话)需要配置如下:

    web.upload.dir: /usr/local/flink-1.8/jars
    

    这样的话,就可以保证你的 jar 不再会被删除了!

    //从配置文件中找 UPLOAD_DIR
    final Path uploadDir = Paths.get(
       config.getString(WebOptions.UPLOAD_DIR, config.getString(WebOptions.TMP_DIR)),
       "flink-web-upload");
    
    return new RestServerEndpointConfiguration(
       restAddress,restBindAddress,port,sslEngineFactory,
       uploadDir,maxContentLength,responseHeaders);
    

    他就是从配置文件中找 UPLOAD_DIR,如果为 null 就找 TMP_DIR 目录来当作 jar 上传的路径。

    总结

    知其然,知其所以然。

    参考资料:

    https://issues.apache.org/jira/browse/FLINK-4308
    https://github.com/apache/flink/pull/2335

    相关文章

      网友评论

        本文标题:Flink Job上传的jar包保存在哪里

        本文链接:https://www.haomeiwen.com/subject/yrzgzqtx.html