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


相关文章
|
20天前
|
存储 人工智能 PyTorch
基于PyTorch/XLA的高效分布式训练框架
基于PyTorch/XLA的高效分布式训练框架
27 2
|
2月前
|
人工智能 算法 PyTorch
TorchAcc:基于 TorchXLA 的分布式训练框架
阿里云研究员、阿里云人工智能平台 PAI 技术负责人--林伟在GTC 2024 大会 China AI Day 线上中文演讲专场上介绍了TorchAcc,这是一个基于 PyTorch/XLA 的大模型分布式训练框架。
|
2月前
|
SQL 弹性计算 分布式计算
TiDB计算层详解:分布式计算框架与查询优化机制
【2月更文挑战第26天】本文将深入剖析TiDB的计算层,详细解析其分布式计算框架和查询优化机制。通过了解计算层的核心组件和工作原理,我们可以更好地理解TiDB如何高效处理SQL查询和计算任务。本文将从计算层的架构、任务分发、查询优化等方面展开介绍,帮助读者全面掌握TiDB计算层的关键技术和优势。
|
2月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
187 0
|
2月前
|
NoSQL Java Redis
分布式锁框架Lock4j简单使用
最近项目中使用到了Lock4j的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。
|
19天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
2月前
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
174 0
|
2月前
|
消息中间件 分布式计算 Kafka
SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)
SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
|
19天前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
69 2
|
7天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架

热门文章

最新文章