flink1.7.2 升级1.13.6问题集

问题1

  • Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/jobhistory/Event
  • per-job on yarn模式运行报异常,global limit =2; local limit is =1 yarn container exitCode: 239
    进入yarn logs -applicationId application_1645773933151_92778没有任何报错信息
分析flink on yarn

根据经验flink on yarn在config.sh 配置 hadoop classpath 并没有完全加载hadooo classpath中所有的环境变量的jar包,避坑:不要在项目中引用hadoop 环境变量中的jar包,为idea调试用,可以配置scope provided

  • 以上根本原因是jar包冲突
  • on yarn 没有任何报错信息,可以使用本地方法调试local,可以输出一些有用报错信息
    /usr/local/flink-1.13.6/bin/flink run -t local -p 4 -Dtaskmanager.numberOfTaskSlots=4 -Djobmanager.memory.process.size=2048m -Dtaskmanager.memory.process.size=4096m -Dyarn.application.name=hive_log_parse -yqu etl -c com.xxx.job.parse.JobMain hive-log-parse-1.0.jar --day 20220612 --job.input.path hdfs://xxxdata/mr-history/day=20220612 --job.output.path hdfs://xxxdata/xxxdata/log/dw_hive_log_parse/day=20220612
  • java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/jobhistory/Event 解决办法:
    找到hadoop 环境中 hadoop-mapreduce-client-core-2.7.3.2.6.5.0-292.jar 复制到 flink lib包目录即可,用到哪个复制哪个
  • 因为项目使用datastream开发,在算子open函数中使用自定义hbase原生连接,引用hbase-client包导致和hadoop环境的jar包导致的依赖冲突
    pom修改如下,保障本地可以测试也可以保障在yarn环境的可用性
 
            org.apache.flink
            flink-connector-hbase-1.4_2.12
            ${flink.version}
        
        
            org.apache.hbase
            
            hbase-shaded-client
            ${hbase.version}
            provided
        

问题2

flink org.apache.logging.log4j.spi.LoggerContextFactory.isClassLoaderDependent()Z 报错
flink on yarn .NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.core.LoggerContext

解决

背景flink1.13 on yarn datastream scala项目

  
        
            org.apache.logging.log4j
            log4j-core
            2.17.1
        
        
            org.apache.logging.log4j
            log4j-slf4j-impl
            2.17.1
        

问题3 Flink akka AskTimeoutException

image.png

解决

背景 flink 1.7.2 datastream scala项目 添加参数 flink-conf.yaml,因为源码对这部分改动很大,可以选择flink到1.13.6,自动修复上诉问题

akka.ask.timeout: 300 s
web.timeout: 600000

问题4 设置参数

yqu etl 发现不生效了

解决

后续指定flink运行参数,建议使用-Dxx=xx
使用 -Dyarn.application.queue=etl

你可能感兴趣的:(flink1.7.2 升级1.13.6问题集)