spark-submit提交Spark Streamming+Kafka程序
我的原创地址:https://dongkelun.com/2018/06/19/sparkSubmitKafka/
前言
Spark Streaming本身是没有Kafka相关的jar包和API的,如果想利用Spark Streaming获取Kafka里的数据,需要自己将依赖添加SBT或Maven项目中,添加依赖更新项目之后,就可以在Eclipse等IDE里直接运行Spark Streamming+Kafka的程序了,可参考Spark Streaming连接Kafka入门教程,但是如果需要在集群通过spark-submit提交jar包的方式来运行程序的话,会抛出异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/StringDeserializer
这是因为Spark本身没有Kafka相关的jar,所以需要将与Kafka相关的jar添加Spark环境中
1、相关jar包
总共需要两个jar,可以在SBT和Maven下载的目录里找到,分别为org.apache.spark/spark-streaming-kafka-0-10_2.11/jars/spark-streaming-kafka-0-10_2.11-2.3.0.jar和org.apache.kafka/kafka-clients/jars/kafka-clients-0.10.0.1.jar,具体的名字会因你的kafka版本和spark版本而有所不同
2、方法一
第一个方法也是我觉得最简单的方法,将这两个jar拷贝到$SPARK_HOME/jars目下即可
如果用ambari安装的spark2,则对应的目录为
/usr/hdp/current/spark2-client/jars/
拷贝命令
cp spark-streaming-kafka-0-10_2.11-2.3.0.jar kafka-clients-0.10.0.1.jar /usr/hdp/current/spark2-client/jars/
然后通过如下命令提交jar即可(只是最简单的配置,实际还需要配置Executor的数量,内存大小等等)
spark-submit --master yarn --class com.dkl.leanring.spark.kafka.KafaDemo spark-scala_2.11-1.0.jar
3、方法二
通过–jars指定需要的jar,多个jar需要以逗号分隔
spark-submit --master yarn --class com.dkl.leanring.spark.kafka.KafaDemo --jars jars/kafka-clients-0.10.0.1.jar,jars/spark-streaming-kafka-0-10_2.11-2.3.0.jar spark-scala_2.11-1.0.jar
这种方式如果依赖的jar很多的话就不方便了
关于spark-submit添加依赖jar更详细说明可参考https://dongkelun.com/2018/05/06/sparkSubmitException/
参考

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
思维体系---技术思维、业务数据思维、产品思维、复合思维
工作已有四年有余,从最初的亚信 到现在的 阿里。。总结了下思维模式,以个人的视角,供各位干代码的小伙伴们参考,能够深入无论 技术还是业务还是产品的本质。发现其中的规律,更好地把握自己的方向及未来。那么总的来说,我分为四种思维模式: 一、技术思维 卧槽!干代码!出bug了!没错,这就是你进步的源头。技术思维中,会对技术异常的热爱,同时会从开发工作中,发现更多的技术,甚至认为,技术是最牛逼的!从技术之中找到无上的成就感。没错,解决一个复杂问题的激动,系统上线后看着流量的注入,那份成就感,以及对于出现error时的那个份紧张,想想都感觉到激动哈哈~那么本文的主题,便是分析纯技术思维的一些优势和弊端,以及如何规避纯技术思维所造成的一些问题。 在日常系统开发中,一般我们会是一个协作的团体,每个人都会有明确的模块,由架构师去设计、拆解,最终使项目成功上线。等时间长了,很多开发的小伙伴会觉得,就那么回事,会觉得无聊,会觉得迷茫我的职业发展,因为总觉得自己做的只是一些业务逻辑 或是 担心某项技术会不会过时,从而盲目的学习各种新技术。 那么这里我说下个人的看法,随着时代的发展,技术一定是日新月异的,拿...
- 下一篇
大数据学习~Hadoop初识三Yarn模式
我们都知道在如今的Hadoop中主要有三个重要的执行管理器。一个HDFS,一个MapReduce,还有就是我们今天要看的 YARN。 2.0以前的Hadoop 在2.0以前的hadoop中是没有Yarn这个模式管理的。大部分都是独自作战。Hbase做自己的,Spark也是做自己的,等等。这样的话就会造成资源的浪费,不能充分的把资源给利用上。特别是在1.x的版本上容易出现单点故障,不容易扩展的情况。 在这里Client的请求都会通过1个JobTracker来分发任务,如果我们的这个JobTracker出现异常。整个集群就没法参与正常工作。 在JobTracker 过多的TaskScheduler 集中过来,容易造成内存,cpu不够用的情况。增加了任务执行失败的风险。 因为这些情况,随着发展,Hadoop需要更新的一代管理引擎来帮助我们管理集群-YARN引擎 在2.0的YARN 在新的业务驱动下,发展起来的YARN替代原先的模式。将原先浪费的资源进行合并,共同管理建立在一个模式管理下 新的YARN模式如下 从图中我们可以看到 原先的JobTracker 被拆分成 资源管理和任务调度监控。 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范