文档章节

SparkStreaming整合kafka编程

四叶草666
 四叶草666
发布于 2017/07/19 10:09
字数 824
阅读 31
收藏 0

1、下载spark-streaming-kafka插件包

由于Linux集群环境我使用spark是spark-2.1.1-bin-hadoop2.7,kafka是kafka_2.11-0.8.2.1,所以我下载的是spark-streaming-kafka-0-8_2.11-2.1.1.jar。

官网下载地址:http://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-8_2.11/2.1.1

百度云下载地址:链接:http://pan.baidu.com/s/1o83DOHO 密码:2dgx

2、整合spark和kafka的jar包

2.1添加spark-streaming-kafka插件包

新建一个lib目录,首先把1步骤下载的spark-streaming-kafka-0-8_2.11-2.1.1.jar放进去

如图:

2.2添加spark依赖包

找到spark-2.1.1-bin-hadoop2.7/jars目录下所有的jar包,如图:

把spark-2.1.1-bin-hadoop2.7/jars目录下所有的jar包复制到上述新建的lib目录下,如图:

2.3添加kafka依赖包

找到kafka_2.11-0.8.2.1/libs目录下所有的jar包,如图:

把kafka_2.11-0.8.2.1/libs目录下所有的jar包复制到上述新建的lib目录下,如图:

3、新建测试工程

新建scala project,引用上述lib目录下的所有jar包;新建一个KafkaWordCount.scala用于测试:

 
  1. import org.apache.spark.streaming.StreamingContext
  2. import org.apache.spark.SparkConf
  3. import org.apache.spark.streaming.kafka.KafkaUtils
  4. import org.apache.spark.streaming.Seconds
  5. import org.apache.spark.streaming.Minutes
  6. import org.apache.spark.SparkContext
  7. import kafka.serializer.StringDecoder
  8.  
  9. object KafkaWordCount {
  10.   def main(args: Array[String]) {
  11.     val sparkConf = new SparkConf().setAppName("KafkaWordCount").setMaster("local[2]")
  12.     sparkConf.set("spark.port.maxRetries","128")
  13.     val ssc = new StreamingContext(sparkConf, Seconds(2))
  14.     ssc.checkpoint("hdfs://192.168.168.200:9000/checkpoint")
  15.     val zkQuorum = "192.168.168.200:2181"
  16.     val group = "test-group"
  17.     val topics = "test"
  18.     val numThreads = 1
  19.     val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
  20.     val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
  21.     val words = lines.flatMap(_.split(" "))
  22.     val wordCounts = words.map(x => (x, 1L))
  23.       .reduceByKeyAndWindow(_ + _, _ - _, Minutes(10), Seconds(2), 2)
  24.     wordCounts.print()
  25.     ssc.start()
  26.     ssc.awaitTermination()          
  27.   }
  28. }

如图:

启动spark集群和kafka集群,默认已经开启,默认kafka有test主题,这是默认要会的,在这里不在详述。

运行成功,如图:

 
  1. SLF4J: Class path contains multiple SLF4J bindings.
  2. SLF4J: Found binding in [jar:file:/I:/001sourceCode/020SparkStreaming/%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%bc%80%e5%8f%91%e6%96%b9%e6%a1%88%e8%b5%84%e6%96%99%ef%bc%88%e5%a4%a9%e7%bb%b4%e5%b0%94%ef%bc%89/%e5%bc%80%e5%8f%91%e6%89%80%e9%9c%80jar%e5%8c%85/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  3. SLF4J: Found binding in [jar:file:/I:/001sourceCode/020SparkStreaming/%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%bc%80%e5%8f%91%e6%96%b9%e6%a1%88%e8%b5%84%e6%96%99%ef%bc%88%e5%a4%a9%e7%bb%b4%e5%b0%94%ef%bc%89/%e5%bc%80%e5%8f%91%e6%89%80%e9%9c%80jar%e5%8c%85/lib/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  4. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  5. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
  6. -------------------------------------------
  7. Time: 1499667652000 ms
  8. -------------------------------------------
  9.  
  10. -------------------------------------------
  11. Time: 1499667654000 ms
  12. -------------------------------------------
  13.  
  14. -------------------------------------------
  15. Time: 1499667656000 ms
  16. -------------------------------------------

4、接收kafka的主题消息

启动一个kafka的生产者客户端:

 
  1. [root@master ~]# kafka-console-producer.sh --broker-list 192.168.168.200:9092 --topic test
  2. test success
  3. spark
  4. kafka

运行日志如下:

 
  1. -------------------------------------------
  2. Time: 1499667830000 ms
  3. -------------------------------------------
  4.  
  5. -------------------------------------------
  6. Time: 1499667832000 ms
  7. -------------------------------------------
  8. (test,1)
  9. (success,1)
  10.  
  11. -------------------------------------------
  12. Time: 1499667834000 ms
  13. -------------------------------------------
  14. (test,1)
  15. (success,1)
  16.  
  17. -------------------------------------------
  18. Time: 1499667836000 ms
  19. -------------------------------------------
  20. (test,1)
  21. (spark,1)
  22. (success,1)
  23.  
  24. -------------------------------------------
  25. Time: 1499667838000 ms
  26. -------------------------------------------
  27. (kafka,1)
  28. (test,1)
  29. (spark,1)
  30. (success,1)

5、sparkStreaming收不到kafka主题消息

如果出现kakfa的消费者客户端可以收到消息,而spark的消费者客户端收不到消息,后台也没有报错,那么要仔细检查kafka_home/conf目录下的server.properties,有没有配置:

 
  1. ############################# Socket Server Settings #############################
  2. # The port the socket server listens on
  3. port=9092
  4. # Hostname the broker will bind to. If not set, the server will bind to all interfaces
  5. host.name=192.168.168.200

一定要配置host.name,否则只能在kafk消费客户端收到消息,不能在sparkStreaming创建的topic消息客户端收到。

6、sbtassembly打包代码并上传到spark运行

可参考以下资料:

使用SBT构建Scala项目

本地开发spark代码上传spark集群服务并运行

 

© 著作权归作者所有

共有 人打赏支持
四叶草666
粉丝 0
博文 51
码字总数 50778
作品 0
深圳
程序员
私信 提问
Spark Streaming流式处理

Spark Streaming介绍 Spark Streaming概述 Spark Streaming makes it easy to build scalable fault-tolerant streaming applications. 它可以非常容易的构建一个可扩展、具有容错机制的流式......

jiFeng丶
07/26
0
0
Spark Streaming结合Flume、Kafka最新最全日志分析

Spark Streaming结合Flume、Kafka最新最全日志分析 1.修改相应的配置文件 按照 http://my.oschina.net/sunmin/blog/692994 整合安装Flume+Kafka+SparkStreaming 将flume/conf/producer.conf将......

ericSM
2016/06/23
556
0
sparkStreaming与Kafka整合

createStream那几个参数折腾了我好久。。网上都是一带而过,最终才搞懂..关于sparkStreaming的还是太少,最终尝试成功。。。 首先启动zookeeper ./bin/zookeeper-server-start.sh config/zook...

雪童子
2015/11/28
0
0
使用Flume+Kafka+SparkStreaming进行实时日志分析

每个公司想要进行数据分析或数据挖掘,收集日志、ETL都是第一步的,今天就讲一下如何实时地(准实时,每分钟分析一次)收集日志,处理日志,把处理后的记录存入Hive中,并附上完整实战代码 ...

Trigl
2017/05/24
0
0
SparkStreaming VS Structed Streaming

导言 Spark在2.*版本后加入StructedStreaming模块,与流处理引擎Sparkstreaming一样,用于处理流数据。但二者又有许多不同之处。 Sparkstreaming首次引入在0.*版本,其核心思想是利用spark批...

WestC
07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
1
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
4
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
3
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
17
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部