论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
大数据-98 Spark 集群 Spark Streaming 根本概述 架构概 ...
大数据-98 Spark 集群 Spark Streaming 根本概述 架构概念 执行流程 优缺点 ...
乌市泽哥
金牌会员
|
2024-8-25 11:15:36
|
显示全部楼层
|
阅读模式
楼主
主题
892
|
帖子
892
|
积分
2676
点一下关注吧!!!非常感谢!!持续更新!!!
现在已经更新到了:
Hadoop(已更完)
HDFS(已更完)
MapReduce(已更完)
Hive(已更完)
Flume(已更完)
Sqoop(已更完)
Zookeeper(已更完)
HBase(已更完)
Redis (已更完)
Kafka(已更完)
Spark(正在更新!)
章节内容
上节我们完成了如下的内容:
Spark SQL JOIN
Boardcast JOIN
Shuffle JOIN
SQL解析过程
SparkSQL 常见的优化逻辑
背景概述
随着大数据技能的不断发展,人们对于大数据的实时性处置处罚要求也不断提高,传统的MapReduce等批处置处罚框架在某些特定领域,例如实时用户保举、用户举动分析这些应用场景上逐渐不能满足人们对实时性的需求,因为诞生了一批如 S3、Samza、Storm、Flink等流式分析、实时计算框架。
Spark Streaming 是 Spark 焦点组件之一,用于实时数据处置处罚。它可以或许将实时数据流分批处置处罚,转换为可操作的分布式数据集 (RDDs),从而实现流数据的实时处置处罚和分析。
根本概念
DStream: DStream(离散流)是 Spark Streaming 中的焦点抽象,代表一个一连的数据流。它可以来自 Kafka、Flume、HDFS、Socket 等数据源,或者由现有的 RDD 颠末转换产生。
Batch Interval: 数据流被划分为多个小批次,每个批次在指定的时间间隔(例如 1 秒或 10 秒)内举行处置处罚,这个时间间隔称为 Batch Interval。
架构概念
Spark Streaming 的架构主要包括如下组件:
输入源: Spark Streaming 支持多种输入源,如 Kafka、Flume、HDFS、S3 等。
处置处罚引擎: 焦点是 Spark Core 的 RDD 处置处罚引擎,利用它来执行批处置处罚操作。
输出操作: 处置处罚后的数据可以输出到文件体系、数据库、仪表板等。
编程模型
Spark Streaming 使用与 Spark 雷同的编程模型,支持常见的 Map、Reduce、Join、Window 等操作。你可以通过在 DStream 上调用这些操作来举行实时数据处置处罚。
Transformation: 如 map、flatMap、filter 等。
Window Operations: Spark Streaming 提供了基于时间窗口的操作,例如窗口化计算,通过 window 和 slide 函数实现。
容错性
检查点机制: 为了处置处罚故障和保证数据同等性,Spark Streaming 提供了检查点机制,可以将中心状态保存到可靠的存储体系(如 HDFS),从而在故障恢复时重建这些状态。
数据重放: 在 Kafka 等消息队列中,消息是基于偏移量的,这使得 Spark Streaming 可以在故障发生时重新处置处罚未处置处罚的消息,确保数据的可靠性和同等性。
什么是 Spark Streaming
Spark Streaming 雷同于 Apache Storm(来一条处置处罚一条、延迟低、响应快、吞吐量低),用于流式数据的处置处罚。
Spark Streaming 具有高吞吐量和容错本领强的特点。
Spark Streaming 支持的数据输入源很多,例如:Kafka(最紧张的数据源)、Flume、TCP套接字等。
数据输入后可用高度抽象API:map reduce join window等举行运算
处置处罚结果可存 HDFS、数据库等
Spark Streaming 可以与 MLib、GraphX融合
Spark Streaming 与 Spark 基于RDD的概念比力雷同,Spark Streaming 使用离散化流(Discretized Stream)作为抽象表示,成为 DStream。
DStream是随着时间推移而收到的数据的序列,在内部,每个时间区间收到的数据都作为RDD存在,DStream是由这些RDD所组成的序列。
DStream 可以从各种输入源创建,好比 Flume、Kafka或者HDFS,创建出来的DStream支持两种操作:
转化操作,会生成一个新的DStream
输出操作(output operation),把数据写入外部体系中
DStream 提供了很多与RDD所支持的操作相雷同的操作支持,还增加了与时间相关的的新操作,好比滑动窗口。
Spark Streaming 架构
Spark Streaming 使用 mini-batch 架构,把流式计算看成一系列一连的小规模批处置处罚来对待。
Spark Streaming 从各种输入源中读取数据,并把数据分组小批次,新的批次按均匀的时间间隔创建出来。
在每个时间区间开始的时候,一个新的批次就创建出来,在该区间内收到的数据都会被添加到这个批次中,在时间区间竣事时,批次制止增长。
时间区间的大小是由批次间隔这个参数决定的,批次间隔一般设置在500ms到几秒之间,由开发者配置。
每个输入批次都形成一个RDD,以Spark作业的方式处置处罚并生成其他的RDD,处置处罚的结果可以批处置处罚的方式传给外部的体系。
Spark Streaming的编程抽象是离散化流,也就是DStream。它是一个RDD序列,每个RDD代表数据流中的一个时间片内的编程。
应用于DStream上的转换操作都会转换为底层RDD上的操作。如对行DStream中的每个RDD应用FlatMap操作以生成单词DStream的RDD。
这些底层RDD转换是Spark引擎完成的,DStream操作隐藏了大部门的细节,为开发人员提供了更高级的API以方便使用。
Spark Streaming为每个输入源启动对应的接收器,接收器运行在Executor中,从输入源收集数据并保存为RDD。
默认情况下接收到数据后会复制到另一个Executor中,举行容错。
Driver中的 StreamingContext 会周期性的运行 Spark作业来处置处罚这些数据。
Spark Streaming运行流程
客户端提交Spark Streaming作业后启动Driver,Driver启动Receiver,Receiver接收数据源的数据
每个作业包罗多个Executor,每个Executor以线程的方式运行Task,Spark Streaming至少包罗一个Receive Task(一般情况下)
Receive接收数据后生成Block,并把BlockId报告给Driver,然后备份到另一个Executor上
ReceiveTracker维护Receiver报告的BlockId
Driver定时启动JobGenerator,根据DStream的关系生成逻辑RDD,然后创建JobSet,交给JobScheduler。
JobScheduler 负责调度JobSet,交给DAGScheduler,DAGScheduler根据逻辑RDD,生成Stages,每个Stage包罗一到多个Task,将Task提交给TaskScheduler。
TaskScheduler负责把Task调度到Executor上,并维护Task的运行状态
Spark Streaming 优缺点
与传统流式框架相比,Spark Streaming 最大的不同点在与它对待数据是粗粒度的处置处罚方式,即一次处置处罚一小批数据,而其他框架每每接纳细粒度的处置处罚模式,即依次处置处罚一条数据,Spark Streaming如许的设计实现既为其带来了显而易见的长处,又引入了不少不可避免的缺点。
长处概括
Spark Streaming 内部的实现和调度方式高度依赖Spark的DAG调度器和RDD,这就决定了Spark Streaming的设计初志必须是粗粒度的方式的。同时,由于Spark内部调度器足够快速和高效,可以快速地处置处罚小批量数据,这就获得准实时的特性
Spark Streaming 的粗粒度执行方式使其确保 “处置处罚且仅处置处罚一次”的特性(EOS),同时也可以更方便地实现容错恢复机制
由于Spark Streaming的DStream本质上RDD在流式数据上的抽象,因为基于RDD的各种操作也有相应的根本DStream的版本,如许就大大低落了用户对于新框架的学习资本,在相识Spark的情况下用户将很轻易使用Spark Streaming。
由于 DStream 是在RDD上的抽象,那么也就更轻易与RDD举行交互操作,在需要将流式数据和批处置处罚数据结合举行分析的情况下,将会变得方便。
缺点概括
Spark Streaming 的粗粒度处置处罚方式也造成了不可避免的延迟,在细粒度处置处罚方式下,抱负情况下每一条记录都会被实时处置处罚,而在Spark Streaming中,数据需要汇总到肯定量都再一次性处置处罚,这么增加了数据处置处罚的延迟,这种延迟是由框架设计引入的,并不是由网络或其他情况造成的。
Structured Streaming
Spark Streaming 计算逻辑是把数据按时间划分为DStream,存在以下题目:
框架自身只能根据BatchTime单位举行数据处置处罚,很难处置处罚基于EventTime(即时间戳)的数据,很难处置处罚延迟,乱序的数据
流式和批量处置处罚的API不完全同等,两种使用场景中,程序代码还是需要肯定的转换
端到端的数据容错保障逻辑需要用户自己构建,难以处置处罚增量更新和持久化存储等同等性题目
基于以上题目,提出了下一代 Structure Streaming。将数据源映射为一张无界长度的表,通过表的计算,输出结果映射为另一张表。
以结构化的方式去操作流式数据,简化了实时计算过程,同时还复用Catalyst引擎来优化SQL操作,此外还能支持增量计算和基于EventTime的计算。
与 Kafka 集成
Kafka 是 Spark Streaming 最常用的消息队列之一。通过 Kafka 与 Spark Streaming 的紧麋集成,可以实现高吞吐量、低延迟的流数据处置处罚。
Direct Approach: 直接从 Kafka 读取数据,不需要中心的 Receiver,确保了精确一次的语义。
Offset 管理: 可以手动管理 Kafka 的偏移量,保证在出错时可以继承处置处罚前次未处置处罚的消息。
应用场景
实时监控: 使用 Spark Streaming 可以实现体系和应用程序的实时监控与报警体系。
日志处置处罚: 处置处罚实时生成的日志数据,举行在线分析和非常检测。
金融分析: 用于实时处置处罚股票交易、风险评估等金融数据。
-交际媒体分析: 实时分析交际媒体数据,监测舆情和用户举动。
性能调优
并行度: 通过增加并行度来提高吞吐量。
内存管理: 需要公道设置内存参数,防止 OOM 错误。
反压机制: Spark Streaming 提供了背压机制,可以动态调整数据处置处罚速率,防止体系过载。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
乌市泽哥
金牌会员
这个人很懒什么都没写!
楼主热帖
是什么让.NET7的Min和Max方法性能暴增 ...
@RequestParam,@PathVariable两个注解 ...
聚焦企业开放OpenAPI痛难点,华为云API ...
想入行SAP咨询,最具性价比的方式 ...
SqlServer远程连接
7 行代码搞崩溃 B 站,原因令人唏嘘! ...
活动 | 塑造软件新生态 赋能发展新变革 ...
2019 第十届蓝桥杯大赛软件赛决赛,国 ...
CentOS7 安装 Redis 7.0.2
[WPF] 使用 HandyControl 的 CirclePan ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表