Flink整合HDFS提交作业时报错
分享一个Flink提交作业时的报错,由于我用的是1.12版本的Flink,对于Hadoop3.0新特性是没有支持的,我的Hadoop版本是3.3.1。然后flink-shaded-hadoop-3-uber jar包是没有的,需要手动添加。
报错
Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Cannot support file system for ‘hdfs’ via Hadoop, because Hadoop is not in the classpath, or some classes are missing from the classpath. at org.apache.flink.runtime.fs.hdfs.HadoopFsFactory.create(HadoopFsFactory.java:189) at org.apache.flink.core.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:527) … 24 more Caused by: java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils -
解决方案
我也试过很多中解决方案
第一种
添加HADOOP_CLASSPATH环境变量,但是我试了没有效果
第二种
在你的项目中添加hadoop-client这个jar包,我也试过了,并没有很好解决,也给出下面的依赖。
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${你的hadoop版本}</version>
</dependency>
第三种
在flink下面添加两个jar包,可以从Maven中心仓库中下载。
https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-3-uber/3.1.1.7.2.1.0-327-9.0
flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar
commons-cli-1.5.0.jar
第三种我试过是可以提交作业成功的,然后自己提交的作业也可以运行。
参考链接
https://www.bilibili.com/read/cv11506216