【回顾】flink1.12+作业以per-job模式部署在yarn-cluster的异常,flink日志配置及webui日志输出,重启作业后checkpoint恢复

一、flink作业部署在yarn-cluster遇到的异常

        某年某月某时,flink作业在本地测试运行的7788了,于是打了个jar包,打算部署yarn-cluster运行试试,我遇到过如下但不限于的异常:

异常

hadoop.hdfs 冲突

java.lang.IllegalAccessError:

class org.apache.hadoop.hdfs.web.HftpFileSystem

cannot access its superinterface

org.apache.hadoop.hdfs.web.TokenAspect$TokenManagementDelegator

hadoop.comon 冲突

Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Could not find a file system implementation for scheme 'hdfs'. The scheme is not directly supported by Flink and no Hadoop file system......

hadoop.comon 冲突

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.

hadoop.auth 冲突

Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.security.HadoopKerberosName.setRuleMechanism(Ljava/lang/String;)V

hadoop-yarn-server-resourcemanager,hadoop-yarn-registry冲突

Caused by: java.lang.ClassCastException: org.apache.hadoop.yarn.proto.YarnServiceProtos$RegisterApplicationMasterRequestProto cannot be cast to org.apache.flink.shaded.hadoop2.com.google.protobuf.Message

commons-cli 冲突

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder;

【解决】

1. pom.xml文件不需要单独引入,还是使用Maven Helper,查看有哪些版本,保留多的那个版本,稳妥起见,排除数量少的版本低的的包

2. 同时将对应的版本jar包上传到flink集群的lib目录中

        最终受网友们的点拨,flink使用的是自己的hadoop jar包,比如flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar,所以flink程序在打jar包时,需要排除其中所有的hadoop开头的jar包。

        排除jar,我用Maven Helper,打开IDEA的插件窗口搜索下载安装即可,安装成功后,在pom文件的左下角多了一个Dependency Analyzer选项页,点击进去,如下图

【回顾】flink1.12+作业以per-job模式部署在yarn-cluster的异常,flink日志配置及webui日志输出,重启作业后checkpoint恢复_第1张图片

【回顾】flink1.12+作业以per-job模式部署在yarn-cluster的异常,flink日志配置及webui日志输出,重启作业后checkpoint恢复_第2张图片

        完成排除工作后,打成jar包部署在yarn-cluster,我上传的是完整的jar包,成功提交yarn。

bin/flink run -m yarn-cluster -yjm 2048 -ytm 1024 /root/flink2kudu-1.0-SNAPSHOT.jar 

【回顾】flink1.12+作业以per-job模式部署在yarn-cluster的异常,flink日志配置及webui日志输出,重启作业后checkpoint恢复_第3张图片

         flink作业正常运行,打开webui

【回顾】flink1.12+作业以per-job模式部署在yarn-cluster的异常,flink日志配置及webui日志输出,重启作业后checkpoint恢复_第4张图片

二、 flink pom.xml文件的日志配置

        我flink/lib中有4个日志包,日志包很容易出现重复绑定的警告,虽然不影响日志的输出,但是......。

日志包 备注
log4j-1.2-api-2.14.1.jar

这是log4j2的4个包,

要与log42.xml配合使用

log4j-api-2.14.1.jar
log4j-core-2.14.1.jar
log4j-slf4j-impl-2.14.1.jar
slf4j-log4j12-1.7.25.jar

这是log4j的包,

要与log4j.properties配合使用

具体看你选择log4j还是log4j2,

虽说不影响日志输出,

但在提交作业时,

flink会警告slf4j绑定重复

感谢网友的分享 Flink日志配置_upupfeng的博客-CSDN博客_flink 日志

        我的日志配置,在idea本地控制台和flink webui的输出都是成功,只是强迫症犯了,网上的文章说可以使用shaded插件在打包时排除jar包,试了2天后没什么效果,放弃了。

【回顾】flink1.12+作业以per-job模式部署在yarn-cluster的异常,flink日志配置及webui日志输出,重启作业后checkpoint恢复_第5张图片

        pom.xml中的log4j2包

        
        
            org.slf4j
            slf4j-api
            1.7.25
        
        
        
            org.apache.logging.log4j
            log4j-slf4j-impl
            2.14.1
        
        
            org.apache.logging.log4j
            log4j-api
            2.14.1
        
        
            org.apache.logging.log4j
            log4j-core
            2.14.1
        
        

        log4j2.xml配置文件 



    
        
            
        

        
            
            
                
            
            
        

    
    
        
            
            
        
    

 三、作业重新启动后,恢复之前的checkpoint

        java代码

    // todo: 生产中一定要使用 ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION,
    //          是为了当作业取消之后,再次恢复时可以恢复之前的结果
    env.getCheckpointConfig().
         enableExternalizedCheckpoints(
              CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

           run -s hdfs://host:8020/path【最后一次checkpoint目录中的原文件】

bin/flink run -m yarn-cluster \
-yjm 2048 -ytm 1024 \
-s hdfs://node1:8020/flink-checkpoints/FlinkETL2KuduTask/f0d91e3707f6743fcdf6b10487849dc8/chk-45/_metadata \
/root/flink2kudu-1.0-SNAPSHOT.jar 

你可能感兴趣的:(#,yarn集群,大数据,flink,yarn)