Spark Streaming实时计算框架介绍
随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐、用户行为分析等。 Spark Streaming是建立在Spark上的实时计算框架,通过它提供的丰富的API、基于内存的高速执行引擎,用户可以结合流式、批处理和交互试查询应用。本文将详细介绍Spark Streaming实时计算框架的原理与特点、适用场景。
Spark Streaming实时计算框架
Spark是一个类似于MapReduce的分布式计算框架,其核心是弹性分布式数据集,提供了比MapReduce更丰富的模型,可以在快速在内存中对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法。Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。
Spark Streaming的优势在于:
- 能运行在100+的结点上,并达到秒级延迟。
- 使用基于内存的Spark作为执行引擎,具有高效和容错的特性。
- 能集成Spark的批处理和交互查询。
- 为实现复杂的算法提供和批处理类似的简单接口。
基于云梯Spark on Yarn的Spark Streaming总体架构如图1所示。其中Spark on Yarn的启动流程我的另外一篇文章(《程序员》2013年11月期刊《深入剖析阿里巴巴云梯Yarn集群》)有详细描述,这里不再赘述。Spark on Yarn启动后,由Spark AppMaster把Receiver作为一个Task提交给某一个Spark Executor;Receive启动后输入数据,生成数据块,然后通知Spark AppMaster;Spark AppMaster会根据数据块生成相应的Job,并把Job的Task提交给空闲Spark Executor 执行。图中蓝色的粗箭头显示被处理的数据流,输入数据流可以是磁盘、网络和HDFS等,输出可以是HDFS,数据库等。
图1 云梯Spark Streaming总体架构
Spark Streaming的基本原理是将输入数据流以时间片(秒级)为单位进行拆分,然后以类似批处理的方式处理每个时间片数据,其基本原理如图2所示。
图2 Spark Streaming基本原理图
首先,Spark Streaming把实时输入数据流以时间片Δt (如1秒)为单位切分成块。Spark Streaming会把每块数据作为一个RDD,并使用RDD操作处理每一小块数据。每个块都会生成一个Spark Job处理,最终结果也返回多块。
下面介绍Spark Streaming内部实现原理。
使用Spark Streaming编写的程序与编写Spark程序非常相似,在Spark程序中,主要通过操作RDD(Resilient Distributed Datasets弹性分布式数据集)提供的接口,如map、reduce、filter等,实现数据的批处理。而在Spark Streaming中,则通过操作DStream(表示数据流的RDD序列)提供的接口,这些接口和RDD提供的接口类似。图3和图4展示了由Spark Streaming程序到Spark jobs的转换图。
图3 Spark Streaming程序转换为DStream Graph
图4 DStream Graph转换为Spark jobs
在图3中,Spark Streaming把程序中对DStream的操作转换为DStream Graph,图4中,对于每个时间片,DStream Graph都会产生一个RDD Graph;针对每个输出操作(如print、foreach等),Spark Streaming都会创建一个Spark action;对于每个Spark action,Spark Streaming都会产生一个相应的Spark job,并交给JobManager。JobManager中维护着一个Jobs队列, Spark job存储在这个队列中,JobManager把Spark job提交给Spark Scheduler,Spark Scheduler负责调度Task到相应的Spark Executor上执行。
Spark Streaming的另一大优势在于其容错性,RDD会记住创建自己的操作,每一批输入数据都会在内存中备份,如果由于某个结点故障导致该结点上的数据丢失,这时可以通过备份的数据在其它结点上重算得到最终的结果。
正如Spark Streaming最初的目标一样,它通过丰富的API和基于内存的高速计算引擎让用户可以结合流式处理,批处理和交互查询等应用。因此Spark Streaming适合一些需要历史数据和实时数据结合分析的应用场合。当然,对于实时性要求不是特别高的应用也能完全胜任。另外通过RDD的数据重用机制可以得到更高效的容错处理。
转载于:https://www.cnblogs.com/shenh062326/p/3530092.html
Spark Streaming实时计算框架介绍相关推荐
- Spark Streaming 实时计算在甜橙金融监控系统中的应用、性能优化、任务监控
1 写在前面 目前公司对实时性计算的需要及应用越来越多,本文选取了其中之一的 Spark Streaming 来介绍如何实现高吞吐量并具备容错机制的实时流应用.在甜橙金融监控系统项目中,需要对每天亿万 ...
- 基于案例贯通 Spark Streaming 流计算框架的运行源码
本期内容 : Spark Streaming+Spark SQL案例展示 基于案例贯穿Spark Streaming的运行源码 一. 案例代码阐述 : 在线动态计算电商中不同类别中最热门的商品排名,例 ...
- Spark:Streaming 实时计算框架理论
Spark Streaming 实时计算框架 一.实时计算概述 1.1 什么是实时计算? 1.2 常用的实时计算框架 二.Spark Streaming 2.1 Spark Streaming 介绍 ...
- Flink or Spark?实时计算框架在K12场景的应用实践
如今,越来越多的业务场景要求 OLTP 系统能及时得到业务数据计算.分析后的结果,这就需要实时的流式计算如Flink等来保障.例如,在 TB 级别数据量的数据库中,通过 SQL 语句或相关 API直接 ...
- 实时计算框架 Spark: Lightning-fast cluster computing
2019独角兽企业重金招聘Python工程师标准>>> real-time processing framework 实时计算框架 Real-time processing deno ...
- 【大数据实时计算框架】Storm框架
一.大数据实时计算框架 1.什么是实时计算?流式计算? (一)什么是Storm? Storm为分布式实时计算提供了一组通用原语,可被用于"流处理"之中,实时处理消息并更新数据库.这 ...
- Spark Streaming 图片处理案例介绍
Spark Streaming 图片处理案例介绍 本文首先介绍了流式处理框架的设计原理.Spark Streaming 的工作原理,然后通过一个基于 Spark Streaming 编写的读取.分析. ...
- 实时计算业务介绍实时日志分析
4.1 实时计算业务介绍 学习目标 目标 了解实时计算的业务需求 知道实时计算的作用 应用 无 4.1.1 实时计算业务需求 实时(在线)计算: 解决用户冷启动问题 实时计算能够根据用户的点击实时反馈 ...
- BATJ大数据架构师带你领略实时计算框架Flink的魅力!
你是不是经常体验或看到以下这些场景? "小张,你看能不能做个监控大屏实时查看促销活动销售额(GMV)?" "小王,我们现在搞促销活动能不能实时统计销量 Top3 啊?&q ...
最新文章
- Android数据存储之SharedPreferences
- 常熟理工电气院永不言败
- 个人做asp.net时犯过的错或是一点心得什么的(我就经常的更新一下吧)
- 前端学习(1992)vue之电商管理系统电商系统之实现搜索和清空
- Lync Server 2010标准版系列PART6:启用Lync
- 小米上市破发,其生态内部的隐患终于显露了?
- linux文件描述符有什么用,linux上的文件描述符3有什么特别之处?
- linux怎么装vnc插件,linux下安装基于GNOME的VNC连接工具Vinagre
- 腾讯225页报告:AI正取代互联网成为新引擎,马化腾提七大关键词
- windows c语言 http 状态检测_从软件架构说C语言
- 打印快递面单pdf_如何开通使用拼多多电子面单?
- 创业型 APP 如何筛选合适的推送平台
- Serv-u6.0提权新玩法
- python 通过逗号分割字符串_「Python 秘籍」使用多个界定符分割字符串
- 零样本学习的相关概念——综述
- CUDA核函数share memory
- 如何使android应用开机时自动启动,如何使APP开机自启动
- 关于未知的USB设备(设备描述符请求失败)的解决方法
- python编程题3.5:恺撒密码
- 研究意识问题为什么如此困难
热门文章
- 如何计算_平整场地如何计算?
- java pop邮件 源码_[源码和文档分享]基于JavaMail的邮件收发系统
- python图像验证码识别_python 简单图像识别--验证码
- div中移除某个元素 js_[JS基础] 13 - 其他 JS 基础
- 电脑服务器怎么打开网页,电脑的iis服务器打开网页的方法
- 上传附件每次都是上传中。_起标题头疼?每次卡在标题上 我都回顾这7种方法 创作灵感就来了...
- gen_caltab自治标定板
- bootstrap table 分组_bootstrap-table组合表头的实现方法
- 如何提取edit control中输入的数据_如何在Power Query中提取数据——列表篇(1)
- GraphQL 初探—面向未来 API 及其生态圈