先上问题截图:
Web UI也无法提交任务:
作者flink版本为15.3,hadoop版本为3.1.3,问题出现前作者刚好搭建完毕flink yarn会话模式部署,能正常访问yarn会话给出的flink集群:
但是不是每次申请yarn session都能够成功,失败时会报如下错误:
Could not start actor system on any port in port range 0
Caused by: java.lang.ClassNotFoundException: scala.collection.convert.Wrappers$MutableSetWrapper
作者的centos7并未部署scala,所以猜想是否是因为未部署scala而导致这个问题的出现。
现在三台节点均已经按照scala2.12.5
再次请求yarn session7次,失败2次:
问题还是一样的,并且Web和命令行仍然无法提交作业,所以应该不是scala是否安装的问题。
怀疑是否是版本依赖问题:
在 Flink1.8.0 之前的版本,想要以 YARN 模式部署 Flink 任务时,需要 Flink 是有 Hadoop 支持的。从 Flink 1.8 版本开始,不再提供基于 Hadoop 编译的安装包,若需要Hadoop 的环境支持,需要自行在官网下载 Hadoop 相关版本的组件flink-shaded-hadoop-2-uber-2.7.5-10.0.jar, 并将该组件上传至 Flink 的 lib 目录下。在 Flink 1.11.0 版本之后,增加了很多重要新特性,其中就包括增加了对Hadoop3.0.0 以及更高版本Hadoop 的支持,不再提供flink-shaded-hadoop-*jar 包,而是通过配置环境变量完成与 YARN 集群的对接。
我的flink版本是1.15.3,hadoop是3.1.3,所以理论上是不需要下载flink-shaded-hadoop-*jar 包的,只需要配置环境变量即可完成和yarn集群的对接。
所以我又重新配置了一下/etc/profile:
还是不能解决问题。。。。。
最后搜索也找不到解决办法,突然想起本机上的flink是为独立模式部署而准备的,更改过配置文件,因此我果断删除掉本机原有flink(其实也不用删除,再解压一次flink安装压缩包然后进入到解压的bin目录下面运行yarn-session.sh即可),然后再解压缩安装不改动任何flink配置文件。
Web页面成功提交:
命令行也成功提交:
总结:flink on yarn部署的话最好重新再解压缩安装一次,在新解压的目录下请求yarn session或命令行提交。