以官网Flink提供的SocketWindowWordCount为例,熟悉下Flink提交任务,执行任务的流程。
一、下载官方示例
下载对应版本的源代码包&二进制包
[注]: 二进制代码是flink的可运行的服务,压缩包中flink-1.13.2/examples
下的文件都是jar包,jar包解压后都是 .class
文件,所以我们想要看示例的源代码,也需要下载flink代码包的源代码。
以Flink的1.13.2为例,对应的二进制包和源代码如下:
- flink-1.13.2-bin-scala_2.11.tgz:flink二进制包
- flink-1.13.2-src.tgz:flink源代码包
![](https://img.haomeiwen.com/i21475959/0248ca56aad9ed67.png)
解压源代码包flink-1.13.2-src.tgz
后cd flink-1.13.2-src/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/socket
,观察一下SocketWindowWordCount.java
程序。
![](https://img.haomeiwen.com/i21475959/b037bbeaf6ecdf16.png)
发现在执行的时候需要指定定一下参数,下边分别来看一下WebUI和命令行提交任务的过程。
二、提交任务
2.1 WebUI提交任务
以flink-1.13.2/examples/streaming/SocketWindowWordCount.jar
为例看一下flink webUI和命令行提交任务的过程。
1,nc命令构造socket流的生产端
因为SocketWindowWordCount是读取的socket流中的数据,所以需要构造一下socket生产端,nc命令可以伪造一个socket流的生产端
nc -l 9090
2,webUI提交任务
1)Add New选择任务
2)指定主类、命令行参数、并行度等参数
3)点击Submit
![](https://img.haomeiwen.com/i21475959/3ae0cd87ea15cef4.png)
- 生产端实时输入
![](https://img.haomeiwen.com/i21475959/d8400c4035e231b0.png)
- flink程序实时输出
![](https://img.haomeiwen.com/i21475959/9b17d05191290f54.png)
2.2 命令行提交任务
./flink-1.13.2/bin/flink run flink-1.13.2/examples/streaming/SocketWindowWordCount.jar --hostname 127.0.0.1 --port 9090
[注] 别忘记启动生产端nc -l 9090
,否则会报错。
![](https://img.haomeiwen.com/i21475959/4c688358be6bf241.png)
如上图所示,左侧为生产端,右侧为flink的任务提交。结果还是需要到webUI上去看。
![](https://img.haomeiwen.com/i21475959/5ed4a033c8eaef7f.png)
[注] 发现有的字段没有累加,查看代码,发现这里还涉及了一个窗口的概念。
参考
【1】Flink学习笔记(1):Word Count:https://www.jianshu.com/p/26c9ef86fb19
网友评论