为什么要编译flink源码
用于学习,在IDEA上开发的flink job,能直接在IDEA运行,如果运行时依赖的flink框架是我们自己编译构建的,就做到了从业务到框架都可以修改源码并验证,起到了很好的学习和动手实践效果;
环境信息
电脑:2019版13寸MacBook Pro,2.3 GHz 四核Intel Core i5,8 GB 2133 MHz LPDDR3
操作系统:macOS Catalina 10.15.3
JDK:1.8.0_211
Maven:3.6.0
IDEA:2018.3.5 (Ultimate Edition)
关于正版IDEA
免费使用正版IDEA,可以参考《 》
全文概览
今天的实战由以下内容组成:
开发一个最简单的flink任务,在IDEA上以local模式运行;下载flink1.9.2源码;修改flink1.9.2源码,并且编译构建;设置,让步骤1中的flink任务用上刚刚编译的flink1.9.2框架;再次运行flink任务,验证修改后的flink框架是否生效;IDEA上运行flink job工程
在IDEA上创建flink job的maven工程并运行,请参考《 》假设您已按上面的步骤在IDEA建好了flink job工程;运行起来,在浏览器打开flink页面,如下图,绿框中显示一共有8个Task Slot:之所以会有8个Task Slot,和下图红框中的代码有关,这是段flink框架源码(StreamExecutionEnvironment.java),入参parallelism是CPU核数,我这里是开了超线程的四核i5处理器,所以parallelism等于8:
今天的目标就是修改上图红框中的源码,然后在网页上看是不是生效了(Task Slot数量从8改成5);
准备工作
maven中央仓库地址建议用阿里云的,否则会经常遇到jar下载超时错误,地址:http://192.168.50.43:8081/repository/aliyun-proxy/flink1.9.2源码的maven工程依赖了一个中央仓库没有的jar,GAV是io.confluent:kafka-schema-registry-client:3.3.1,您需要下载下来在本地仓库做mvn install操作,下载地址:http://packages.confluent.io/maven/io/confluent/kafka-schema-registry-client/3.3.1/kafka-schema-registry-client-3.3.1.jar上述准备工作都需要您在本地maven上操作,但是如果您的条件允许,还是强烈推荐在内网搭建maven私服nexus3,参考:《 》、《 》、《 》下载flink1.9.2源码
flink1.9.2源码的下载地址:http://ftp.jaist.ac.jp/pub/apache/flink/flink-1.9.2/flink-1.9.2-src.tgz
修改和编译构建
将下载好的flink-1.9.2-src.tgz解压,得到文件夹flink-1.9.2设置
为了用上刚刚构建出来的flink框架jar,要做些设置,打开之前运行的flink job应用,在项目上点击右键,点击菜单Open Module Settings,如下图:
验证
当前flink job工程来自《 》一文,StreamingJob的工作是读取本机18081端口的数据,所以我们要把18081端口的服务启动起来,不然StreamingJob运行时是连不上端口的,打开一个控制台,执行命令:nc -l 18081现在可以将StreamingJob运行起来,如下图,右键点击StreamingJob,选择Run 'StreamingJob.main()':即可启动flink任务:至此,Flink1.9.2的源码从修改到编译构建,再到验证都已经完成了,如果您也在学习flink,希望本文能给您一些参考,一起来动手实战吧;