前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark Streaming 整体介绍

Spark Streaming 整体介绍

作者头像
Freedom123
发布2024-03-29 09:00:50
690
发布2024-03-29 09:00:50
举报
文章被收录于专栏:DevOpsDevOps

1. 概要 ?? ?Hadoop的MapReduce及Spark SQL等只能进行离线计算,无法满足实时性要求较高的业务需求,例如实时推荐,实时网站性能分析等,流式计算可以解决这些问题,spark Streaming就是现在常用的流式计算框架。作为spark的五大核心组件之一,spark Streaming原生地支持多种数据源的接入,而且可以与Spark MLLib、Graphx结合起来使用,具有高吞吐量,容错机制,

?? ?Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处理过的数据可以被推送到文件系统,数据库和HDFS。 ?? ?简而言之,Spark Streaming的作用就是实时的将不同的数据源的数据经过处理之后将结果输出到外部文件系统。

?? ?在内部,其按如下方式运行。Spark Streaming接收到实时数据流同时将其划分为分批,这些数据的分批将会被Spark的引擎所处理从而生成同样按批次形式的最终流。

?? ?Spark Streaming提供了被称为离散化流或者DStream的高层抽象,这个高层抽象用于表示数据的连续流。 2. 原理 ?? ?粗粒度 ?? ?Spark Streaming接收到实时数据流,把数据按照指定的时间段切成一片片小的数据块,然后把小的数据块传给Spark Engine处理。

?? ?细粒度 ?? ?接收实时输入数据流,然后将数据拆分成多个batch,比如每收集1秒的数据封装为一个batch,然后将每个batch交给Spark的计算引擎进行处理,最后会生产出一个结果数据流,其中的数据,也是由一个一个的batch所组成的。 ?? ?DStream ?? ?Spark Streaming提供了一种高级的抽象,叫做DStream,英文全称为Discretized Stream,中文翻译为“离散流”,它代表了一个持续不断的数据流。DStream可以通过输入数据源来创建,比如Kafka、Flume、ZMQ和Kinesis;也可以通过对其他DStream应用高阶函数来创建,比如map、reduce、join、window。

?? ?DStream的内部,其实一系列持续不断产生的RDD。RDD是Spark Core的核心抽象,即,不可变的,分布式的数据集。DStream中的每个RDD都包含了一个时间段内的数据。 ?? ?对DStream应用的算子,比如map,其实在底层会被翻译为对DStream中每个RDD的操作。比如对一个DStream执行一个map操作,会产生一个新的DStream。但是,在底层,其实其原理为,对输入DStream中每个时间段的RDD,都应用一遍map操作,然后生成的新的RDD,即作为新的DStream中的那个时间段的一个RDD。底层的RDD的transformation操作。 ?? ?还是由Spark Core的计算引擎来实现的。Spark Streaming对Spark Core进行了一层封装,隐藏了细节,然后对开发人员提供了方便易用的高层次的API。

?? ?任何对DStream的操作都会转变为对底层RDD的操作(通过算子):

3. Spark与Spark Streaming区别 ?? ?Spark处理的是批量的数据(离线数据),Spark Streaming实际上处理并不是像Strom一样来一条处理一条数据,而是对接的外部数据流之后按照时间切分,批处理一个个切分后的文件,和Spark处理逻辑是相同的。 ?? ?Spark -> RDD:transformation ?action ?+ ?RDD DAG ?? ?Spark Streaming -> Dstream:transformation output(它不能让数据在中间激活,必须保证数据有输入有输出) + ?DStreamGraph

4. 重要概念 ?? ?Dstream ?? ??? ?Spark Streaming提供了表示连续数据流的、高度抽象的被称为离散流的DStream ?? ??? ?DStream是Spark Streaming特有的数据类型。 ?? ??? ?Dstream可以看做一组RDDs,即RDD的一个序列 ?? ??? ?Spark的RDD可以理解为空间维度,Dstream的RDD理解为在空间维度上又加了个时间维度。 ?? ?Dashboards ?? ??? ?图形监控界面,Spark Streaming可以输出到前端的监控页面上 ?? ?Dstream Graph: ?? ??? ?一系列transformation操作的抽象,Dstream之间的转换所形成的的依赖关系全部保存在DStreamGraph中,DStreamGraph对于后期生成RDD Graph至关重要 ?? ?持久化:接收到的数据暂存。 ?? ??? ?为什么持久化?做容错的,当数据流出错了,因为没有得到计算,需要把数据从源头进行回溯,暂存的数据可以进行恢复。 ?? ?离散化:按时间分片,形成处理单元。 ?? ?分片处理:分批处理。

5. 创建DStream的两种方式 ?? ?1. 由Kafka,Flume取得的数据作为输入数据流。 ?? ?2. 在其他DStream进行的高层操作。?? ? 6. Spark Structure Streaming ?? ?Spark 2.0 将流式计算也统一到DataFrame里去了,提出了Structured Streaming的概念,将数据源映射为一张无线长度的表,同时将流式计算的结果映射为另外一张表,完全以结构化的方式去操作流式数据,复用了其对象的Catalyst引擎。

?? ?概念上,所谓流式,无非就是无限大的表,官方给出的图一目了然:

?? ?Structured Streaming 的意义到底何在? ?? ??? ?重新抽象了流式计算 ?? ??? ?易于实现数据的exactly-once

7. 总结 ?? ?将连续的数据持久化,离散化,然后进行批量处理。 ?? ?目前广泛使用的框架是:Kafka + Spark Streaming 做实时流数据处理,至少Kafka 在国内还是比较受欢迎的。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com