2021SC@SDUSC
前言
上一篇博客分析了Spark Streaming的性能调优机制,这次分析一下Spark 2.X的流计算过程
介绍
Spark 发展迅速,如今最新的版本已经是3.X了,但由于分析的需要以及减少分析困难,我们小组选定的是3.1.2的版本(详见小组环境配置博客:山东大学软件工程应用与实践——Spark项目(一)),但本次分析不针对Spark3.X的流计算特性而转而分析Spark2.X中的内容,是为了便于为Spark进行理解。这里也结合databricks官方演示文档里的一些图片进行分析。
Spark流计算
Spark2.X中相比于Spark1.6.X之前的版本,其提出了包含三个主题的更新:Easier、Faster、Smarter。
Spark2.X将流式计算也统一到DataFrame里中,提出了Structured Streaming的概念。功能更强大,效率更高,与其他组件的整合性也更好。
Structured Streaming的核心是将流式的数据看成一张不断增加的数据表,这种流式的数据处理模型类似于数据块处理模型,你可以把静态数据库表的一些查询操作应用在流式计算中,Spark运行这些标准的SQL查询,从不断增加的无边界表中获取数据。
不断输入的流式数据会被加载为内存中一张没有边界的数据表,每一条新来的数据都会作为一行数据新增到这张表中。
一、连续应用程序
首页,也是最重要的,在Spark2.X中提出了一个叫做连续应用程序(continuous application)的概念。
下图展示了一个围绕流数据展开的各种业务,数据从Kafka中流进来,通过ETL操作进行数据清洗,清洗出来作为目标数据进行进一步处理,可能是机器学习,也可能是交互式查询,也有可能直接把数据存在数据库或者其他外部存储设备,