提交 Flink 作业及所见问题总结
一、提交作业
1、执行命令
可以使用 flink run --help 用来查看更多命令
2、示例
2.1、不带参数:
2.2、带参数:
每一个-
代表一个参数键
,后面跟的是值
解析的时候直接使用 flink 自带类去解析
2.3、从 checkpoint 提交
增加了参数:
完整命令:
二、提交作业碰到的问题
先把碰到的问题做个总结,再做详细解说
1、总结
先把碰到的问题总结一下:
资源不够的问题。解决方式:调整集群配置文件。
打包时,META-INF 下面的 SPI 没打进去的问题。解决方式:在 pom.xml 中增加 maven 插件。
pom 的依赖配置问题,在 FlinkSQL 场景下会跟集群里的 lib 包有重复的冲突。解决方式:有些依赖打包时候无需打进去,在 flink 集群的 lib 目录下存在的 jar 包,则在打包作业 jar 时,无需打进去。
公有云上的特殊情况
2、详细解说
2.1、资源不够的问题:
错误描述:
可能内存设置小了、可能并发分配小了、可能是 slot 设置小了,参考配置flink-conf.yaml
:
2.2、找不到 mysql-cdc 的问题
是因为打包的时候没有把所有包的 meta-inf 合并打包到一起,需要在 pom.xml 中增加配置:
可以参考如下文章:
https://wii.pub/2021/08/23/tools/maven/problems/merge-meta-info/
https://blog.csdn.net/RL_LEEE/article/details/128134800
2.3、jar 包重复的问题
有时候本地开发和运行时需要某个 jar 包,但是丢到集群去执行时不需要这个 jar 包。因为集群的 lib 中已经存在此 jar 包。此时会报类似的错误:
解决方法:打包时,需要将 pom 的 scope 改成 provided
3、提交到公有云上出现的问题
在本地运行 OK,提交到测试服务器也是运行 OK,但是丢到公有云的 ECS 机器上可能出现一些问题。
3.1、无效的参数 0.0.0.0:8081
无效的参数 0.0.0.0 问题,应该是 netty 访问 0.0.0.0 被限制了,应该是云上自己限制的,测试环境没这个问题,后来改成配置本机 ip 地址就好了。
3.2、需要修改 tmp 临时文件的地址,否则会占用系统盘的控件
3.3、云上数据库用户权限不够
到云上控制台修改用户权限
评论