首先安装flink,这里以1.13.1举例(docker安装的话,jobmanager和taskmanager需要分开部署)

flink-docker-github-repository

(这个参数flink文档中没找到)关于query.server.port: 6125不用去管,这个不填也会默认自动生成:

1
2
yml中的内容不说了, 下面贴几张关于Flink生产配置最佳实践的图, 钉钉公开课趣头条实时平台负责人分享
https://www.bilibili.com/video/BV1iE411r7S6

Flink在yarn上运行,每个TaskManager的slot个数怎么设置?
经验公式:
slot个数tm个数=并行度
并行度=kafka的分区个数(10分区)
slot的个数要小于yarn设置的单个container最大可以申请的cpu核数(5个 8-36个)。
那么就是 5个slot2个tm=并行度=kafka分区数
多个小集群好还是一个大集群好?
1.小集群的话任务分布在不同的集群,任务之间的影响小。不会因为一个任务占用过高的cpu导致集群重启,而导致集群中所有的任务失败。
2.多个小集群管理可能压力会大。

下面是启动成功后的ui图

下面说下两种提交任务的方式

命令行执行jar

1
2
3
4
5
6
进入 task manager 容器,执行

指定具体类执行,--output输出到文件
flink run -c 全路径类名 /opt/flink/xxx.jar --output xxx.txt
直接执行
flink run ./examples/streaming/WordCount.jar

命令行可以看到

1
2
3
4
5
6
7
Executing WordCount example with default input data set.
Use --input to specify file input.
Printing result to stdout. Use --output to specify output path.
Job has been submitted with JobID 7fd804a5972d30a38a428912349370b4
Program execution finished
Job with JobID 7fd804a5972d30a38a428912349370b4 has finished.
Job Runtime: 230 ms

ui可以看到

控制台提交

无论哪种执行方式,任务的执行日志以及exception,可以再jobmanager处查看到

还有,ui提交的话点一次submit就好,它这里有些问题,点完提交不提示成功(这时候不要多次点击,这可能会导致多次提交),但是可以去running job查看提交成功