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

根據(jù)經(jīng)驗flink on yarn在config.sh 配置 hadoop classpath 并沒有完全加載hadooo classpath中所有的環(huán)境變量的jar包,避坑:不要在項目中引用hadoop 環(huán)境變量中的jar包,為idea調(diào)試用,可以配置scope provided

  • 以上根本原因是jar包沖突
  • on yarn 沒有任何報錯信息,可以使用本地方法調(diào)試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 環(huán)境中 hadoop-mapreduce-client-core-2.7.3.2.6.5.0-292.jar 復(fù)制到 flink lib包目錄即可,用到哪個復(fù)制哪個
  • 因為項目使用datastream開發(fā),在算子open函數(shù)中使用自定義hbase原生連接,引用hbase-client包導(dǎo)致和hadoop環(huán)境的jar包導(dǎo)致的依賴沖突
    pom修改如下,保障本地可以測試也可以保障在yarn環(huán)境的可用性
 <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-hbase-1.4_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <!--用于本地測試,hadoop環(huán)境使用上面的,如果不這么做,會有依賴沖突,導(dǎo)致yarn exit exitCode: 239 -->
            <artifactId>hbase-shaded-client</artifactId>
            <version>${hbase.version}</version>
            <scope>provided</scope>
        </dependency>

問題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項目

  <!-- 日志實現(xiàn) 將是最好的依賴方式 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.17.1</version>
        </dependency>

問題3 Flink akka AskTimeoutException

image.png

解決

背景 flink 1.7.2 datastream scala項目 添加參數(shù) flink-conf.yaml,因為源碼對這部分改動很大,可以選擇flink到1.13.6,自動修復(fù)上訴問題

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

問題4 設(shè)置參數(shù)

yqu etl 發(fā)現(xiàn)不生效了

解決

后續(xù)指定flink運行參數(shù),建議使用-Dxx=xx
使用 -Dyarn.application.queue=etl

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容