Spark分布式计算框架之SparkStreaming+kafka

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Spark分布式计算框架之SparkStreaming+kafka

1、SparkStreaming的介绍

SparkStreaming 是流式处理框架,是 Spark API 的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume,Twitter, ZeroMQ 或者 TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。


2、MR&Storm&Spark&flink的区别

MR:针对数据进行处理,没封装高级的算子,自己实现逻辑,没有SQL的流式处理。


Storm:针对实时数据进行处理,是一条一条的数据进行处理的,封装了高级算子,自己实现逻辑,不实现SQL处理数据,吞吐量小。延迟小。


Spark:在spark中的sparkCore中支持批量数据处理,sparkSQL支持SQL处理,SparkStreaming支持流式处理,SparkStreaming封装了高级算子吞吐量大,但是数据处理的延迟较大。


flink:flink支持批量数据的处理,支持SQL处理流式数据,但flink更偏向于实时处理,,也可以使用开窗函数进行批量数据处理,也封装了高级算子吞吐量大。


3、SparkStreaming处理数据原理

receiver task 是 7*24 小时一直在执行,一直接受数据,将一段时间内接收来的数据保存到 batch 中。假设 batchInterval 为 5s,那么

会将接收来的数据每隔 5 秒封装到一个 batch 中,batch 没有分布式计算特性,这一个 batch 的数据又被封装到一个 RDD 中,RDD 最终封装到一个 DStream 中。


4、Driver HA

因为SparkStreaming是7*24小时运行的,Driver 只是一个简单的进程,有可能挂掉,所以实现 Driver 的 HA 就有必要(如果使用的 Client 模式就无法实现 Driver HA ,这里针对的是 cluster 模式)。Yarn 平台 cluster 模式提交任务,AM(AplicationMaster)相当于 Driver,如果挂掉会自动启动AM。这里所说的 DriverHA 针对的是 Spark standalone 和 Mesos 资源调度的情况下。实现 Driver 的高可用有两个步骤:

第一:提交任务层面,在提交任务的时候加上选项 --supervise,当 Driver挂掉的时候会自动重启 Driver。

第二:代码层面,使用 JavaStreamingContext.getOrCreate(checkpoint 路径,JavaStreamingContextFactory)

Driver 中元数据包括:


1.创建应用程序的配置信息。

2.DStream 的操作逻辑。

3.job 中没有完成的批次数据,也就是 job 的执行进度。

5、kafka介绍

Kafka 是一个高吞吐的分布式消息队列系统。特点是生产者消费者模式,先进先出(FIFO)保证顺序,自己不丢数据,默认每隔 7 天清理数据。消息列队常见场景:系统之间解耦合、峰值压力缓冲、异步通信。


6、kafka的生产者和消费者模型

kafka生产者数据的特点:

1、topic由多个partition组成,partition内部是有序的,partition多是为了并发生产数据。

2、当数据是kv格式的,则按照hash值和partition个数取模决定去哪个分区。

3、非kv格式则按轮询方式。

4、一个partition对应一个brocker,一个brocker管多个partition,数据写入文件中,而不是存在内存,数据默认一周删除,而不是消费完就删除。

kafka消费者数据的特点:

1、每个consumer都有对应的group

2、一个topic中每个partition,只能一组消费者的一个consumer消费使用

3、不同的消费者组之间消费同一组topic组之间不影响。

4、同一个消费者组内的不同消费者消费相同topic时,数据只能消耗一次。

5、同一个topic中每一个分区只能被一个消费者组内同一个消费者连接消费。


7、kafka特点

1、生产者消费者模型

2、高性能、吞吐大

3、持久性:消息直接持久化在普通磁盘上且性能好。

4、分布式:数据副本余,流量负载均衡可扩展

5、灵活


相关文章
|
25天前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
34 0
|
25天前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
68 0
|
3天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
25天前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
50 0
|
3月前
|
分布式计算 资源调度 Shell
如何开始使用Spark框架?
【8月更文挑战第31天】如何开始使用Spark框架?
55 2
|
3月前
|
SQL 机器学习/深度学习 分布式计算
Spark框架
【8月更文挑战第31天】Spark框架
38 2
|
5月前
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
|
6月前
|
分布式计算 大数据 数据处理
Spark RDD(弹性分布式数据集)
Spark RDD(弹性分布式数据集)
|
分布式计算 Java Hadoop
[Spark]Spark RDD 指南三 弹性分布式数据集(RDD)
Spark2.3.0 版本: Spark2.3.0 创建RDD Spark的核心概念是弹性分布式数据集(RDD),RDD是一个可容错、可并行操作的分布式元素集合。
1456 0