在CDH集群外提交Spark流处理程序报错NoClassDefFoundError kafka consumer

如题,详细报错信息如下:

20/03/05 11:20:06 ERROR ApplicationMaster: User class threw exception: java.lang.NoClassDefFoundError: org/apache/kafka/clients/consumer/Consumer
java.lang.NoClassDefFoundError: org/apache/kafka/clients/consumer/Consumer
    at org.apache.spark.streaming.kafka010.ConsumerStrategies$.Subscribe(ConsumerStrategy.scala:256)
    at com.znv.facecluster.utils.SparkUtils$.getStreamFormKafka(SparkUtils.scala:40)
    at com.znv.facecluster.topic.FaceClusterTopic$.readPicture(FaceClusterTopic.scala:37)
    at com.znv.facecluster.topic.FaceClusterTopic$.process(FaceClusterTopic.scala:28)
    at com.znv.facecluster.entry.RealTimeFaceClusterapp$.main(RealTimeFaceClusterapp.scala:76)
    at com.znv.facecluster.entry.RealTimeFaceClusterapp.main(RealTimeFaceClusterapp.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$4.run(ApplicationMaster.scala:721)
Caused by: java.lang.classNotFoundException: org.apache.kafka.clients.consumer.Consumer
    at java.net.urlclassloader.findClass(urlclassloader.java:381)
    at java.lang.classLoader.loadClass(ClassLoader.java:424)
    at java.lang.classLoader.loadClass(ClassLoader.java:357)
    ... 11 more

经测试,在集群服务器上提交是可以正常运行的,但是在集群外提交就报这个与Kafka相关的错误

错误日志看,是找不到Kafka Consumer这个类,但是在集群中提交是正常的,说明在集群中提交程序,spark可能把Kafka Client的jar包上传了(仅是猜测,待考证),既然如此在集群外提交时把kafka client的jar包一同上传不久ok了,说干就干。把 kafka-clients-0.10.0.1.jar在spark-submit的--jars中增加上,提交运行,结果不如所料,问题被解决了。

相关文章

# 前言 现有主流消息中间件都是生产者-消费者模型,主要角色...
错误的根源是:kafka版本过高所致,2.2+=的版本,已经不需要...
DWS层主要是存放大宽表数据,此业务中主要是针对Kafka topic...
不多BB讲原理,只教你怎么用,看了全网没有比我更详细的了,...
终于写完了,其实最开始学kafka的时候是今年2月份,那时候还...
使用GPKafka实现Kafka数据导入Greenplum数据库踩坑问题记录(...