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、灵活


相关文章
|
6天前
|
负载均衡 监控 Go
使用Golang框架构建分布式系统
本文探讨了使用Golang构建分布式系统的方法。Golang因其高效、简洁的语法和并发支持成为理想的开发语言。文中列举了几个常用的Golang框架,如Echo、Gin、gRPC和NATS等,并强调了服务拆分、通信机制、负载均衡等构建分布式系统的关键要素。通过选择合适的框架,遵循需求分析、技术选型、服务设计等步骤,开发者可以构建出高性能、高可用和可扩展的系统。此外,文中还提供了一个使用gRPC和etcd的简单代码案例来说明实现过程。
24 4
|
5天前
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
|
5天前
|
消息中间件 分布式计算 Kafka
利用Spark将Kafka数据流写入HDFS
利用Spark将Kafka数据流写入HDFS
|
6天前
|
分布式计算 负载均衡 并行计算
Python 分布式计算框架 PP (Parallel Python):集群模式下的实践探索
该文介绍了使用Parallel Python (PP) 在两台物理机上构建分布式计算集群的经验。PP是一个轻量级框架,旨在简化Python代码在多处理器系统和集群中的并行执行。文中通过设置子节点的IP、端口和密钥启动PP服务器,并在主节点创建PP实例进行负载均衡。实验使用官方的质数和计算示例,显示PP在集群模式下能有效利用多台机器的多核CPU,实现计算效率的显著提升。未来,作者计划进一步研究PP在更复杂任务和大规模集群中的应用潜力。
|
17天前
|
分布式计算 Hadoop 大数据
分布式计算框架比较:Hadoop、Spark 与 Flink
【5月更文挑战第31天】Hadoop是大数据处理的开创性框架,专注于大规模批量数据处理,具有高扩展性和容错性。然而,它在实时任务上表现不足。以下是一个简单的Hadoop MapReduce的WordCount程序示例,展示如何统计文本中单词出现次数。
51 0
|
20天前
|
分布式计算 网络协议 大数据
基于C++的分布式计算框架设计与实现
基于C++的分布式计算框架设计与实现
53 2
|
23天前
|
机器学习/深度学习 分布式计算 数据处理
在Python中应用Spark框架
在Python中应用Spark框架
23 1
|
1月前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
399 2
|
3天前
|
NoSQL 算法 Java
探讨redis分布式锁
探讨redis分布式锁
10 1
|
10天前
|
缓存 NoSQL 安全
玩转Redis!非常强大的Redisson分布式集合,少写60%代码
Redisson是Java的Redis客户端,提供实时数据平台服务,简化了分布式环境下的数据管理。它包含RList、RSet、RMap等分布式集合,支持ConcurrentMap和Set接口,确保线程安全和数据一致性。例如,RMap实现了本地缓存和监听器功能,允许数据监听和本地加速读取。此外,还提供了RSet的排序和去重功能,以及RQueue和RBlockingQueue等队列实现,支持阻塞操作。通过Redisson,开发者能轻松处理分布式系统的数据同步和操作。

热门文章

最新文章

相关实验场景

更多