Flink에서 jar 오류 실행: java.io.IOException: 입력 분할 파일 열기 오류 또는 java.io.FileNotFoundException

1. 오류 내용

Flink가 jar를 실행할 때 다음 오류가 보고됩니다.

org.apache.flink.client.program.ProgramInvocationException: Job failed. (JobID: 80bbed7b2180c6fd5904c29e7e8af447)
	at org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:268)
	at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:486)
	at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:474)
	at org.apache.flink.client.program.ContextEnvironment.execute(ContextEnvironment.java:62)
	at org.apache.flink.api.java.ExecutionEnvironment.execute(ExecutionEnvironment.java:816)
	at org.apache.flink.api.java.DataSet.collect(DataSet.java:413)
	at org.apache.flink.api.java.DataSet.print(DataSet.java:1652)
	at org.apache.flink.examples.java.wordcount.WordCount.main(WordCount.java:88)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:529)
	at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:421)
	at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:426)
	at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:816)
	at org.apache.flink.client.cli.CliFrontend.runProgram(CliFrontend.java:290)
	at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:216)
	at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1053)
	at org.apache.flink.client.cli.CliFrontend.lambda$main$11(CliFrontend.java:1129)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1836)
	at org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)
	at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1129)
Caused by: org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
	at org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:146)
	at org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:265)
	... 24 more
Caused by: java.io.IOException: Error opening the Input Split file:/opt/module/datas/word.txt [0,64]: /opt/module/datas/word.txt (没有那个文件或目录)
	at org.apache.flink.api.common.io.FileInputFormat.open(FileInputFormat.java:824)
	at org.apache.flink.api.common.io.DelimitedInputFormat.open(DelimitedInputFormat.java:470)
	at org.apache.flink.api.common.io.DelimitedInputFormat.open(DelimitedInputFormat.java:47)
	at org.apache.flink.runtime.operators.DataSourceTask.invoke(DataSourceTask.java:170)
	at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.FileNotFoundException: /opt/module/datas/word.txt (没有那个文件或目录)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at org.apache.flink.core.fs.local.LocalDataInputStream.<init>(LocalDataInputStream.java:50)
	at org.apache.flink.core.fs.local.LocalFileSystem.open(LocalFileSystem.java:142)
	at org.apache.flink.api.common.io.FileInputFormat$InputSplitOpenThread.run(FileInputFormat.java:996)

둘째, 문제의 원인

1. 파일이 입력 경로에 존재하지 않습니다.

2. 입력 경로의 파일이 flink 클러스터의 TaskManager가 아니라 JobManager 노드에 있습니다.

3. 输入路径的文件与Flink集群安装位置在同一级路径下 会有冲突( 이것이 가장 큰 이유입니다 )
여기에 이미지 설명 삽입

3. 솔루션

1. 존재하지 않는 파일의 경우 해당 파일의 경로로 수정

2. flink 입력 파일이 로컬 파일인 경우 파일을 TaskManager 노드(즉, 슬레이브 노드)에 넣어야 합니다.

3. 입력 파일의 경로 변경
여기에 이미지 설명 삽입

4. 결과 시연

jar 명령을 다시 실행하십시오.
여기에 이미지 설명 삽입
이때 문제가 완벽하게 해결되었음을 알 수 있습니다! ! !

추천

출처blog.csdn.net/weixin_43520450/article/details/124698750