1.无法使用hdfs文件系统作为输入和输出(flink无法使用hdfs)
原因:我使用的是flink1.13.3版本比较新,从1.8.X版本之后就没有直接支持和hadoop的连接了。
如之前的flink安装包都是这样的:(带有hadoop)
需要我们下载相应的uber和cli:
如题主flink1.13.3,scala2.11下载的是:
flink-shaded-hadoop-3-uber-3.1.1.7.2.1.0-327-9.0.jar
commons-cli-1.4.jar
如果没有可以这样下载:
选择好版本就可看到这个界面,点击files中的jar,下载jar包
下载完成后将这两个jar包导入到linux上flink的lib目录下中
2.使用yarn部署运行flink时会话模式(yarn-session)和使用分离模式时出现0.0.0.0.8032
这个问题可以看:这篇文章的第一个问题。主要就是一个细心问题。另外注意修改一个应用的配置文件后都需要重启这个应用,否则修改是无效的,这适用于所有应用(如yarn,hdfs,spark,flink,kafka,flume…)。
3.使用idea编写关于flink的wordcount 程序的java代码时,使用netcat出现错误(包括本地运行和集群运行)。
1).SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
解决:
依赖中加入:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.2</version>
</dependency>
2).Exception in thread “main” org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
先考虑检查程序代码:如我在使用时导入包时因为使用了idea的自动修改,导致一个代码段(DataStream换成了SingleOutputStreamOperator)被修改了,然后就一直出现这个错误。
保证自己代码是正确无误之后,注意应该先开启ncat监控端口后run java程序
3).提交到集群上运行时出现“main-class”找不到的错误
这是导入包错误导致的(不要直接使用maven的package打包工具)
正确导入包的顺序:file->project structure->artifacts->±>jar->from module with dependencies->main class 选择右边图标的文件导入方式
选择自己要运行的主类
删除/src/main/java
4).集群运行程序,提示org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: org.apache.flink.client.program.ProgramInvocationException: Job failed (JobID:73c52482a7412048f9b459b0ed2e23f9)。
和拒绝连接错误: Caused by: java.net.ConnectException: 拒绝连接 (Connection refused)
原因:没有修改socket连接(至于为什么不能直接使用本地的,原因未知)
将socket的hostname修改为flink集群的master节点对应的主机名(如node01)
重新打包提交到集群上
先在master(假设为node01)开启监听(nc -lk 2020)
再运行这个jar文件(bin/flink run xxxx.jar)
5).打开web UI想查看stdout结果,但是没有结果
如果当前 flink webui没有结果不要着急,想一想自己是不是配置了两个master(HA模式),可以查看下另一个节点上的webui。
( ゜- ゜)つロ