第二天 flink任务提交&写Wordcount任务
向flink集群 提交任务的方式有两种。
昨天已经测试用 flink run 方式的提交任务。今天测试用web页面的方式提交任务。
已经部署好了standalone模式的flink集群
web ui 端口默认为8081
点击右上角 add new 按钮,开始上传 flink程序的jar包
我没有flink jar包,用官方提供的案例jar 测试一下流程。
看一下 flink 的 example 目录
[root@worker19 flink-1.12.7]# ls examples/
batch gelly python streaming table
有5个文件夹,分别对应 批处理,图计算,Python,流计算,table 的一些案例。
使用的jar包 路径 :examples/streaming/SocketWindowWordCount.jar
我的工作机器是Windows
copy jar包 到电脑
访问 web界面,点 submit new job
提交jar包
点 SocketWindowWordCount.jar
可以设置 并行度,参数,保存点路径
worker19 用 nc 向8888端口 发数据
[root@worker19 flink-1.12.7]# nc -lk 8888
参数 --hostname worker19 --port 8888
并行度 2
checkpoint path不写
点击 submit
提交成功,注意 一定要先启动 nc 再提交
向 worker19 8888端口 发数据
[root@worker19 ~]# nc -lk 8888
hello flink hello flink
hello flink hello flink
hello flink hello flink
hello flink hello flink
hello flink hello flink
hello flink hello flink
hello flink hello flink
hello flink hello flink
查看页面taskmanager
设置的并行度为2,第一个taskmanager的stdout没有统计结果,去另一个看,结果如下
删除任务 runjob 任务详情 里的 cancel
或者 关闭 nc 任务也会自动退出
flink run 脚本 的参数说明
Syntax: run [OPTIONS]
“run” action options:
-c,--class 需要指定的main方法的类
-C,--classpath 指定第三方依赖的url。url需要指定文件的schema如(file://),url所有节点都能访问
-d,--detached 在后台运行
-n,--allowNonRestoredState 是否允许跳过保存点
-p,--parallelism 并行度
-m, --jobmanager 指定job
-s,--fromSavepoint savepoint路径
[root@worker19 flink-1.12.7]# bin/flink run -m worker19:8081 -c org.apache.flink.streaming.examples.socket.SocketWindowWordCount -p 2 examples/streaming/SocketWindowWordCount.jar --hostname worker19 --port 8888
注意 -m 指定的是jobmanager 节点+rest端口号(默认8081)
向 worker19机器 8888端口 发数据
在web界面 taskmanager stdout 查看输出结果
创建 flink 模板工程
mvn archetype:generate
-DarchetypeGroupId=org.apache.flink
-DarchetypeArtifactId=flink-quickstart-java
-DarchetypeVersion=1.12.7
curl https://flink.apache.org/q/quickstart.sh | bash -s 1.12.7
我在IDEA 里使用 maven 构建flink模板
add archetype 后,勾选 create from archetype,选择flink模板, 新建maven项目
flink-study
项目里有一个批处理 ,一个流处理的 样例类
package org.example.day02;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.