在用flink-sql的方式连接hive时 ,出现以下错误: The program finished with the following exception:
org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: Could not deploy Yarn job cluster. at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:366) at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:219) at org.apache.flink.client.ClientUtils.executeProgram(ClientUtils.java:114) at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:812) at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:246) at org.apache.flink.client.cli.CliFrontend.parseAndRun(CliFrontend.java:1054) at org.apache.flink.client.cli.CliFrontend.lambda$main$10(CliFrontend.java:1132) 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:1688) at org.apache.flink.runtime.security.contexts.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41) at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1132) Caused by: org.apache.flink.client.deployment.ClusterDeploymentException: Could not deploy Yarn job cluster. at org.apache.flink.yarn.YarnClusterDescriptor.deployJobCluster(YarnClusterDescriptor.java:481) at org.apache.flink.client.deployment.executors.AbstractJobClusterExecutor.execute(AbstractJobClusterExecutor.java:81) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.executeAsync(StreamExecutionEnvironment.java:1905) at org.apache.flink.client.program.StreamContextEnvironment.executeAsync(StreamContextEnvironment.java:135) at org.apache.flink.client.program.StreamContextEnvironment.execute(StreamContextEnvironment.java:76) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1782) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1765) at com.erwan.flinksql.FlinkConnectHive.main(FlinkConnectHive.java:49) 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:349) ... 11 more Caused by: org.apache.flink.yarn.YarnClusterDescriptor$YarnDeploymentException: The YARN application unexpectedly switched to state FAILED during deployment. Diagnostics from YARN: Application application_1618298202025_0017 failed 1 times (global limit =2; local limit is =1) due to AM Container for appattempt_1618298202025_0017_000001 exited with exitCode: 2 Failing this attempt.Diagnostics: [2021-04-14 19:04:02.506]Exception from container-launch. Container id: container_e13_1618298202025_0017_01_000001 Exit code: 2。
由于错误原因不明显,不好排查,也不确定是到底是哪里的问题,请问有什么办法能够定位问题。*来自志愿者整理的flink
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到这种问题时,通常需要从以下几个方面进行排查和定位:
YARN应用日志:错误信息中提到“Diagnostics from YARN”,这表明YARN提供了关于应用失败的诊断信息。你需要登录到YARN资源管理器所在的节点,通过YARN的web UI或者使用命令行工具(如yarn logs -applicationId <application_id>
)查看具体的错误日志。这些日志通常会包含导致任务失败的具体原因,比如资源分配不足、权限问题、依赖库缺失等。
Flink JobManager和TaskManager日志:即使是在YARN上部署Flink作业,Flink的JobManager和TaskManager也会生成自己的日志文件。这些日志通常包含了更详细的执行过程信息,有助于定位问题。可以通过YARN的web UI找到相关容器的日志链接,或直接在HDFS上查找对应的日志目录。
检查Flink配置:确保你的Flink配置正确无误,特别是与YARN集成相关的设置,例如队列名称、内存和CPU资源配置等。不正确的配置可能导致资源申请失败或容器启动异常。
环境变量和依赖冲突:有时候,应用程序的运行时环境(如Java版本、依赖库版本)与Flink或Hadoop集群的预期环境不匹配,也可能导致此类问题。确认所有依赖项兼容,并且环境变量设置正确。
AM Container退出码:错误信息中提到了“exitCode: 2”。这个退出码是关键线索之一,不同的退出码代表了不同的错误类型。对于exitCode 2,这通常意味着有非零的返回值,可能是由于应用程序主类执行过程中出现了未捕获的异常。检查你的Flink作业代码以及任何自定义的UDFs或连接器是否存在潜在的错误。
Hadoop和YARN版本兼容性:确保你的Flink版本与Hadoop/YARN集群的版本兼容。不同版本之间可能存在不兼容的问题,导致作业无法正常提交或运行。
资源限制:检查YARN集群是否有足够的资源来运行你的Flink作业。如果资源紧张,可能会导致作业调度失败。
通过上述步骤,你应该能够逐步缩小问题范围并最终定位到具体原因。解决后,记得重新提交作业验证。