SparkStreaming读取Kafka数据源并写入Mysql数据库
一、实验环境
本实验所用到的工具有
kafka_2.11-0.11.0.2;
zookeeper-3.4.5;
spark-2.4.8;
Idea;
MySQL5.7
什么是zookeeper?
zookeeper 主要是服务于分布式服务,可以用zookeeper来做:统一配置管理,统一命名服务,分布式锁,集群管理。使用分布式系统就无法避免对节点管理的问题(需要是实时感知节点的状态,对接点进行统一管理等等),而由于这些问题处理起来相对麻烦,提高了系统的复杂性,zookeeper作为一个可以通用解决这些问题的中间件就应运而生了。
Kafka是什么?
简单的说,Kafka是由Linkedin开发的一个分布式的消息队列系统(Message Queue),不只是消息队列系统,还是实时流处理应用和保存流数据。kafka开发的主要初衷目标是构建一个用来处理海量日志,用户行为和网站运营统计等的数据处理框架。在结合了数据挖掘,行为分析,运营监控等需求的情况下,需要能够满足各种实时在线和批量离线处理应用场合对低延迟和批量吞吐性能的要求。从需求的根本上来说,高吞吐率是第一要求,其次是实时性和持久性。
kafka与zookeeper:
一个典型的Kafka集群中包含若干Produce,若干broker(一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。kafka依赖于zookeeper。
二、准备工作
虚拟机上:配置好相应的环境后,启动zookeeper,再启动Kafka。
Windows上:在idea的maven项目的pom.xml文件添加kafka依赖:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
<version>2.4.8</version>
</dependency>
三、思路分析
1.服务器端:在启动了zookeeper的情况下启动Kafka,并且启动Kafka的生产者作为产生数据的数据源。
2.客户端:通过在idea上编写SparkStreaming程序作为消费者来实时消费Kafka产生的数据,并对数据进行处理,即词频统计。
3.将客户端的结果数据存入MySQL数据库。

四、代码实现
1.测试
1.1 在idea上编写消费程序:
package scala.sparkstreaming
import org.apache.kafka.common.serialization.StringDeserializer
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.kafka010.KafkaUtils
import org.apache.spark.streaming.{
Seconds, StreamingContext}
import org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe
import org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistent
object KafkaDemo {
def main(args:Array[String]): Unit =

最低0.47元/天 解锁文章
389

被折叠的 条评论
为什么被折叠?



