问题:批处理写入kafka,结束关闭kafka时出现错误:
Caused by: java.lang.NoSuchMethodError: org.apache.kafka.clients.producer.KafkaProducer.close(Ljava/time/Duration;)V
at org.apache.flink.streaming.connectors.kafka.internals.FlinkKafkaInternalProducer.close(FlinkKafkaInternalProducer.java:172) ~[flink-connector-kafka_2.12-1.0.0.jar:?]
at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.close(FlinkKafkaProducer.java:941) ~[flink-connector-kafka_2.12-1.0.0.jar:?]
at org.apache.flink.api.common.functions.util.FunctionUtils.closeFunction(FunctionUtils.java:41) ~[flink-dist_2.12-1.13.2.jar:1.13.2]
at org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator.close(AbstractUdfStreamOperator.java:109) ~[flink-dist_2.12-1.13.2.jar:1.13.2]
at org.apache.flink.streaming.runtime.tasks.StreamOperatorWrapper.lambda$closeOperator$5(StreamOperatorWrapper.java:213) ~[flink-dist_2.12-1.13.2.jar:1.13.2]
分析:是版本冲突:
1、 flink-avro-confluent-registry 里面包含了kafka-clients 版本是5.5
2、kafka connector里面包含了kafka-clients 版本是2.4.1
【原文连接:https://www.cnblogs.com/yy3b2007com/p/10274053.html】
CDH下集成spark2.2.0与
kafka
(四十一):在spark+
kafka
流处理程序中抛出错误java.lang.
NoSuchMethodError
:
org
.
apache
.
kafka
.
client
s.consumer.
Kafka
Consumer.subs
cribe
(Ljava/util/Collection;)V
在环境部署的时候,因为是整个拷贝,遗留的历史jar包没有对应删除,导致加载的不同的jar包中存在相同的class类。IOUtils类中没有readFully()方法,通过反编译工具查找这个class类对应的jar包发现,其中一个jar包的类中的确缺少这个方法,但是另外一套环境,包括本地代码环境运行时却没有发现这个
问题
。这说明在编译期没有报错,运行时,报错,然后后面导致进程终止,程序异常,并且此异常并没有在Log4J的log日志中体现,一开始排查并没有找到这个报错,查看nohup后台日志发现这个错误。
使用场景:通过spark的Structured Streaming消费
kafka
中指定
topic
的数据,将分析结果写入到hbase中
报错:java.lang.
NoSuchMethodError
:
org
.
apache
.hadoop.security.authentication.util.KerberosUtil.hasKerberosKeyTab(Ljavax/security/auth/S...
使用
kafka
Connectors 时候,序列化方式选择avro时候报
java.lang.
NoSuchMethodError
:
org
.
apache
.avro.Schema.isNullable()Z
解决方式:
修改高级配置的引擎版本
vvr-4.0.13-
flink
-1.13修改为vvr-4.0.8-
flink
-1.13
SLF4J: Failed to load class "
org
.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.
org
/co
des
.html#Stat...
// Create DataFrame representing the stream of input lines from
kafka
val lines = spark.readStream
.format("
kafka
")
.option("
kafka
.bootstrap.servers", "
kafka
1:9092,
kafka
2:9092,
kafka
3:9092")
.option("subs
cribe
", ".
Kafka
Pro
ducer
(
org
.
apache
.
kafka
.
client
s.
pro
ducer
.
Kafka
Pro
ducer
)是一个用于向
kafka
集群发送数据的Java客户端。该Java客户端是线程安全的,多个线程可以共享同一个
pro
ducer
实例,而且这通常比在多个线程中每个线程创建一个实例速度要快些。
解决:将jar包中的pom中
flink
的依赖版本,也换成1.14.5,与服务器上的
flink
版本一致,即可正常启动啦!原因:升级后使用的
flink
安装版本是1.14.5,而我的jar包中是使用的1.13.2。
flink
消费
kafka
上数据时报错:
Caused by: java.lang.
NoSuchMethodError
:
org
.
apache
.
kafka
.
client
s.consumer.
Kafka
Consumer.assign(Ljava/util/List;)V
错误原因:
Flink
的
kafka
Consumer版本和
kafka
-
client
的版本不一致
解决方案:三者版本一致
正确配...
启动
kafka
报错:java.lang.
NoSuchMethodError
:
org
.
apache
.zookeeper.ZooKeeper.(Ljava/lang/String;IL
org
/
apache
/zookeeper/Watcher;L
org
/
apache
/zookeeper/
client
/ZK
Client
Config;)V
1》压测期间产生大量事后数据流向
flink
实时计算环节,
flink
任务消费的
kafka
出现堆积而产生告警。
2》通过
flink
监控平台查看日志发现
flink
任务频繁重启失败,checkpoint save失败。
3》通过
kafka
平台监控发现,
flink
任务连接
kafka
的连接数不断攀升,即
kafka
连接泄漏。
4》短时间内所有
flink
任务都出现频繁的重启失败,导致
kafka
集群夯住,最终
kafka
集群挂了。
org
.
apache
.
kafka
.common.network.NetworkSend 是一个
Kafka
客户端库,
kafka
0.9以前,首先初始化这个类。你确定在
kafka
-
client
客户端只有一个版本
kafka
-
client
jar 在classpath