flink程序打包,减小flink jar包大小的办法

通常flink程序依赖都比较大,导致每次打包程序到服务器运行或调试的时候都要把程序依赖的一堆依赖打进程序里然后上传运行。

为了更方便的调试,我们需要把代码和依赖分离,具体做法如下

在业务代码里的maven使用这种打包方式:


            org.apache.maven.plugins
            maven-dependency-plugin
            2.10
            
                
                    copy-dependencies
                    package
                    
                        copy-dependencies
                    
                    
                    
                        ${project.build.directory}/lib
                    
                
            
        

用maven打包package以后,在target目录下会生成没有依赖空间比较小的jar包代码和lib目录,lib目录下就是这个项目所有依赖的jar包。

然后需要做的就是把lib下的全部jar包放到服务器上flink集群每个节点安装目录下的lib,然后需要重启flink集群,我这里遇到了坑,我最开始没重启flink,把包放进去然后启动程序,发现有的包确实被加载了,程序日志也打印了,但是另外一个json包没被加载,提示招不到类定义,最后总结了一下原因是因为我在本地跑的时候,driver里面的依赖可以被加载,但是worker里面的分布式程序用到的包却加载不到,原因就是需要flink重启集群。

重启flink集群用ps查看进程的时候发现,flink进程的名字变长了,我上传的jar包都在flink集群初始化启动的时候加载了,这时候再启动程序就没问题了。

你可能感兴趣的:(flink,flink,jar,大数据)