热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kafka版本不兼容引发TaskExecutor启动故障分析与解决

在本地环境中部署了两个不同版本的Flink集群,分别为1.9.1和1.9.2。近期在尝试启动1.9.1版本的Flink任务时,遇到了TaskExecutor启动失败的问题。尽管TaskManager日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由Kafka版本不兼容引起的。通过调整Kafka客户端配置并升级相关依赖,最终成功解决了这一故障。

问题描述

本地部署过两套flink环境,分别是1.9.1和1.9.2版本。最近在1.9.1版本下启动flink任务时,taskmanager日志正常,但taskexecutor疯狂打印日志,如下

2021-01-23 09:38:41,743 INFO  org.apache.kafka.common.utils.AppInfoParser                   - Kafka version : 0.9.0.1
2021-01-23 09:38:41,743 INFO  org.apache.kafka.common.utils.AppInfoParser                   - Kafka commitId : 23c69d62a0cabf06
2021-01-23 09:38:41,878 INFO  org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase  - Consumer subtask 0 will start reading the following 1 partitions from the committed group offsets in Kafka: [KafkaTopicPartition{topic='billow_ex_hy_live_tglog_barrage_report_test', partition=0}]
2021-01-23 09:38:41,883 INFO  org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase  - Consumer subtask 0 creating fetcher with offsets {KafkaTopicPartition{topic='billow_ex_hy_live_tglog_barrage_report_test', partition=0}=-915623761773}.
2021-01-23 09:38:41,887 INFO  org.apache.flink.runtime.taskmanager.Task                     - Source: kafka-reader-_0 -> Sink: Print to Std. Out (1/1) (7f384a6ac95e594178a601f5ed139ce7) switched from RUNNING to FAILED.
java.lang.Exception: java.lang.IllegalAccessError: tried to access method org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.adjustAutoCommitConfig(Ljava/util/Properties;Lorg/apache/flink/streaming/connectors/kafka/config/OffsetCommitMode;)V from class org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
        at org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.checkThrowSourceExecutionException(SourceStreamTask.java:217)
        at org.apache.flink.streaming.runtime.tasks.SourceStreamTask.processInput(SourceStreamTask.java:133)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.run(StreamTask.java:301)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:406)
        at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:705)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:530)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalAccessError: tried to access method org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.adjustAutoCommitConfig(Ljava/util/Properties;Lorg/apache/flink/streaming/connectors/kafka/config/OffsetCommitMode;)V from class org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
        at org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer.createFetcher(FlinkKafkaConsumer.java:223)
        at org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.run(FlinkKafkaConsumerBase.java:695)
        at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:100)
        at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:63)
        at org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:203)
2021-01-23 09:38:41,889 INFO  org.apache.flink.runtime.taskmanager.Task                     - Freeing task resources for Source: kafka-reader-_0 -> Sink: Print to Std. Out (1/1) (7f384a6ac95e594178a601f5ed139ce7).
2021-01-23 09:38:41,889 DEBUG org.apache.flink.runtime.taskmanager.Task                     - Release task Source: kafka-reader-_0 -> Sink: Print to Std. Out (1/1) network resources (state: FAILED).

但在flink 1.9.2版本下不存在问题,仔细对比两个环境下的taskexecutor启动日志, 发现1.9.1版本的环境taskexecutor加载了很多包,kafka版本也不是目前本地运行的。

跟踪原因,这个是因为之前生产环境的flink集群,各种问题相当垃圾,少了很多依赖包,编译的时候有些要jar打包进去有些要去掉,kafka集群还是上古时代的0.9版本。

为了应付之前的flink实时任务部署上线,所以本地开发测试搭建了了flink 1.9.1 + kafka 0.9的环境,还在flink的lib目录下放了各种所需要的包,还包括kafka 0.9版本的jar包。

(base) leonlai@LEONLAI-MB0 env % ll flink-1.9.1/lib | wc -l     
     131

(base) leonlai@LEONLAI-MB0 env % ll flink-1.9.1/lib | grep kafka
-rw-r--r--    1 leonlai  staff     37610 Aug 11 18:58 flink-connector-kafka-0.9_2.11-1.9.1.jar
-rw-r--r--    1 leonlai  staff    104635 Aug 11 18:58 flink-connector-kafka-base_2.11-1.9.1.jar
-rw-r--r--    1 leonlai  staff    641408 Aug 11 18:58 kafka-clients-0.9.0.1.jar

看下flink 1.9.2环境的 lib目录,很干净

(base) leonlai@LEONLAI-MB0 env % ll flink-1.9.2/lib        
total 269872
drwxr-xr-x@  7 leonlai  staff       224 Jan 24  2020 .
drwxr-xr-x@ 13 leonlai  staff       416 Jan 24  2020 ..
-rw-r--r--@  1 leonlai  staff  96731949 Jan 24  2020 flink-dist_2.11-1.9.2.jar
-rw-r--r--@  1 leonlai  staff  22182626 Jan 24  2020 flink-table-blink_2.11-1.9.2.jar
-rw-r--r--@  1 leonlai  staff  18750846 Jan 24  2020 flink-table_2.11-1.9.2.jar
-rw-r--r--@  1 leonlai  staff    489884 Aug  8  2019 log4j-1.2.17.jar
-rw-r--r--@  1 leonlai  staff      9931 Aug  8  2019 slf4j-log4j12-1.7.15.jar

 但我的代码是基于新生产环境写的,flink 1.9.1以上的版本+kafka 2.2.0版本,所以在旧的环境下跟kafka 0.9版本冲突了。

解决方法


  1. 恢复flink 1.9.1干净环境,把不需要的包备份然后删掉;或者本地切换到flin 1.9.2干净环境即可,建议。
  2. 将代码和本地kafka环境统一切换到0.9版本,不建议。

 

 

 


推荐阅读
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • 全面解读Apache Flink的核心架构与优势
    Apache Flink作为大数据处理领域的新兴力量,凭借其独特的流处理能力和高效的批处理性能,迅速获得了广泛的关注。本文旨在深入探讨Flink的关键技术特点及其应用场景,为大数据处理提供新的视角。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • Storm集成Kakfa
    一、整合说明Storm官方对Kafka的整合分为两个版本,官方说明文档分别如下:StormKafkaIntegratio ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 构建Filebeat-Kafka-Logstash-ElasticSearch-Kibana日志收集体系
    本文介绍了如何使用Filebeat、Kafka、Logstash、ElasticSearch和Kibana构建一个高效、可扩展的日志收集与分析系统。各组件分别承担不同的职责,确保日志数据能够被有效收集、处理、存储及可视化。 ... [详细]
  • Kafka 示例项目中 Log4j 的配置与调试
    本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
  • Flink1.10定义UDAGG遇到SQL
    按照以下代码测试定义的UDAGG会一直出现org.apache.flink.table.api.ValidationException:SQLvalidationfailed.nu ... [详细]
author-avatar
开心宝2502869253
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有