写点什么

专访朱诗雄:Apache Spark 中的全新流式引擎 Structured Streaming

  • 2018-01-31
  • 本文字数:2692 字

    阅读完需:约 9 分钟

Apache Spark 在 2016 年的时候启动了 Structured Streaming 项目,一个基于 Spark SQL 的全新流计算引擎 Structured Streaming,让用户像编写批处理程序一样简单地编写高性能的流处理程序。经过一年多的改进和完善,目前 Structured Streaming 已经在 Databricks 内部和客户广泛使用,InfoQ 采访了 Structured Streaming 的核心开发朱诗雄来具体了解这个项目。

朱诗雄:Spark Streaming 是 Spark 早期基于 RDD 开发的流式系统,用户使用 DStream API 来编写代码,支持高吞吐和良好的容错。其背后的主要模型是 Micro Batch,也就是将数据流切成等时间间隔的小批量任务来执行。

Structured Streaming 则是在 Spark 2.0 加入的经过重新设计的全新流式引擎。它的模型十分简洁,易于理解。一个流的数据源从逻辑上来说就是一个不断增长的动态表格,随着时间的推移,新数据被持续不断地添加到表格的末尾。用户可以使用 Dataset/DataFrame 或者 SQL 来对这个动态数据源进行实时查询。每次查询在逻辑上就是对当前的表格内容执行一次 SQL 查询。如何执行查询则是由用户通过触发器(Trigger)来设定。用户既可以设定定期执行,也可以让查询尽可能快地执行,从而达到实时的效果。一个流的输出有多种模式,既可以是基于整个输入执行查询后的完整结果,也可以选择只输出与上次查询相比的差异,或者就是简单地追加最新的结果。这个模型对于熟悉 SQL 的用户来说很容易掌握,对流的查询跟查询一个表格几乎完全一样。

InfoQ:是不是可以把 Structured Streaming 理解为对 Spark Streaming 的改进?Structured Streaming 的设计初衷是为了解决什么具体问题的能介绍下吗?

朱诗雄:Structured Streaming 并不是对 Spark Streaming 的简单改进,而是我们吸取了过去几年在开发 Spark SQL 和 Spark Streaming 过程中的经验教训,以及 Spark 社区和 Databricks 众多客户的反馈,重新开发的全新流式引擎,致力于为批处理和流处理提供统一的高性能 API。同时,在这个新的引擎中,我们也很容易实现之前在 Spark Streaming 中很难实现的一些功能,比如 Event Time 的支持,Stream-Stream Join(2.3.0 新增的功能),毫秒级延迟(2.3.0 即将加入的 Continuous Processing)。

类似于 Dataset/DataFrame 代替 Spark Core 的 RDD 成为为 Spark 用户编写批处理程序的首选,Dataset/DataFrame 也将替代 Spark Streaming 的 DStream,成为编写流处理程序的首选。

InfoQ:有了 Structured Streaming,是否意味着 Spark 不仅具有卓越的批处理能力,也同时具备了优秀的流处理能力,可以用 Spark 来构建统一批处理和流处理的大数据平台?这样子的平台是否更能适应未来人工智能快速发展,对更大数据量、更多样化的数据处理的需求?

朱诗雄:是的。Structured Streaming 决定使用 Dataset/DataFrame API 最主要的一个原因就是希望用户不再需要分别为批处理和流处理编写代码,而是直接使用同一套代码。目前我们也在 Databricks Delta 项目中探索如何基于 Cloud 构建一个统一的批处理和流处理的数据平台。

这样的一个数据平台会对人工智能有很大帮助。Google 之前有一篇 paper 提到了,在一个机器学习系统中的机器学习代码只占一小部分,有很大一部分是用来进行数据收集、清理、验证、特征提取、分析等各种操作 [1]。 而后面这些工作都是 Spark 所擅长的。

[1] “Hidden Technical Debt in Machine Learning Systems” Google NIPS 2015

InfoQ: 可以聊聊有了 Structured Streaming 的 Spark 有什么优劣势吗?

朱诗雄:Structured Streaming 的主要优势体现在下面几点:

  • 简洁的模型。Structured Streaming 的模型很简洁,易于理解。用户可以直接把一个流想象成是无限增长的表格。
  • 一致的 API。由于和 Spark SQL 共用大部分 API,对 Spaprk SQL 熟悉的用户很容易上手,代码也十分简洁。同时批处理和流处理程序还可以共用代码,不需要开发两套不同的代码,显著提高了开发效率。
  • 卓越的性能。Structured Streaming 在与 Spark SQL 共用 API 的同时,也直接使用了 Spark SQL 的 Catalyst 优化器和 Tungsten,数据处理性能十分出色。此外,Structured Streaming 还可以直接从未来 Spark SQL 的各种性能优化中受益。
  • 多语言支持。Structured Streaming 直接支持目前 Spark SQL 支持的语言,包括 Scala,Java,Python,R 和 SQL。用户可以选择自己喜欢的语言进行开发。

InfoQ:可以介绍一下在 Databricks 内部,哪些地方在使用 Structured Streaming 么?效果如何?

朱诗雄:我们内部使用 Structured Streaming 开发了自己的日志处理系统,相比原来的批处理系统,延迟从几十分钟下降到了几分钟。我们还利用 Structured Streaming 来分析 Databricks 的客户日志,监控客户使用 Structured Streaming 的情况。一旦发现用户的程序有问题,会自动触发报警。得益于 Structured Streaming 的高性能和低延时,我们甚至可以在客户发现问题之前,提前帮助他们解决。

Databricks 的很多客户也在使用 Structured Streaming,每天有 100 多个 Structured Streaming 的应用程序在生产环境中运行,最大的应用程序每个月可以处理几十万亿条数据。

InfoQ:Structured Streaming 跟其他的流处理技术相比,算是比较年轻的技术吧?目前有什么已知待解决的问题?未来有什么新增功能和优化的计划能否介绍下?

朱诗雄:是的,Structured Streaming 从开始开发到现在也就两年时间,相当年轻,也存在一些待解决的问题。比如由于开发资源有限,一些不常用的功能还没有完成,例如 Update 输出模式。另外,Spark 的动态资源分配对 Structured Streaming 的支持不是很好,无法根据用户的流处理程序很好地调整资源。大家可以到 Spark 的 JIRA 上查看 Structured Streaming 的相关 Issue。

在即将发布的 Spark 2.3.0 中,最令人期待的是支持毫秒级延迟的 Continuous Processing。同时,也新增了对 Stream-Stream Join 的支持。此外,在这个版本中,还将发布新的 Source 和 Sink API,让用户方便地开发各种 Streaming 数据源。

在未来的后续版本中,我们会继续对 Continuous Processing 进行改进。同时,也会支持 Update 输出模式,推出更多的 Streaming 数据源。

InfoQ: 您对于未来 Structured Streaming 的发展和应用范围有什么预期吗?

朱诗雄:我个人希望有更多的用户来使用 Structure Streaming,包括新用户和 Spark Streaming 已有的用户。同时也希望能看到有更多的机器学习和图处理算法支持 Structured Streaming。

QCon 北京 2018 全新开启,聚焦最新技术热点,沉淀最优实践经验。现在报名享 8 折优惠,立减 1360 元。有任何问题欢迎咨询票务经理 Hanna,电话:010-84782011,微信:qcon-0410。

2018-01-31 18:0017193
用户头像
Tina InfoQ高级编辑

发布了 1711 篇内容, 共 1387.2 次阅读, 收获喜欢 4051 次。

关注

评论

发布
暂无评论
发现更多内容

Python 包管理器入门指南

小万哥

Python 程序员 软件 后端 开发

EndNote 21 for Mac(文献管理软件)

展初云

Mac 文献管理 endnote

Vector Magic for mac(矢量图片转换工具)

展初云

Mac 矢量图 Mac软件

Golang微服务框架居然可以开发单体应用?—— Kratos单体架构实践

golang 微服务架构 单体架构 Kratos #微服务

mac文件夹数据同步工具推荐 Sync Folders Pro中文最新版

胖墩儿不胖y

Mac软件 文件同步工具 文件备份同步

Amadine for Mac 矢量图设计工具 完美兼容M1

彩云

矢量图设计 Amadine下载

OpenHarmony技术俱乐部亮相第二届OpenHarmony技术大会, 揭榜课题科研共建OpenHarmony

科技热闻

mac音频传输工具Loopback激活版 完美兼容macOS14系统和M芯片

Rose

mac音频编辑器 Loopback下载 Loopback激活版 Loopback Mac版

免费算力部署ChatGLM3-6B大语言模型

打工人!

大模型

音频修复增强工具:iZotope RX 10 for mac 支持M1

加油,小妞!

音频修复 iZotope RX 10

【强推】苹果Mac电脑后期处理软件,打造极致的

Rose

Mac破解软件 后期特效软件有哪些 Mac特效制作工具 视频剪辑Mac版

VM虚拟机安装Win11系统图文教程(附VMware13永久密钥)

Rose

Win11镜像下载 VM虚拟机破解版 VMware13永久密钥

「支持M1/M2」Topaz Video AI for mac 4.0.3

加油,小妞!

Topaz Video AI 视频增强修复工具

OmniGraffle Pro 图表绘制工具 附 注册机 支持M1

繁星

OmniGraffle Pro 图表绘制

专业高效的视频编辑软件Premiere Pro 2023补丁激活版

胖墩儿不胖y

Mac软件 视频处理工具 视频编辑软件

Maya 2024 for Mac(3D图形软件)

展初云

maya Mac软件 玛雅 3D图形

Python 异常处理:try、except、else 和 finally 的使用指南

小万哥

Python 程序员 软件 后端 开发

支持m1、IntelliJ IDEA 2023.2.4 Mac中文版 附 注册码

彩云

IntelliJ IDEA 2023最新 IntelliJ IDEA 2023

CodeWhisperer 的使用心得

亚马逊云科技 (Amazon Web Services)

创享蜀都 创力澎湃|2023鲲鹏开发者创享日·成都站成功举办

科技热闻

免费算力部署stable-diffusion

打工人!

Stable Diffustion

苹果mac电脑GoLand 2023 注册码最新 GoLand 2023 中文下载「支持m1 m2」

Rose

Go 语言 GoLand 2023破解版 GoLand 2023注册码

支持M1、Capture One Pro 23 Mac 「raw图像处理工具」

繁星

图像处理工具 Capture One Pro 23

第二届OpenHarmony技术大会隆重揭幕年度课题,为OpenHarmony技术发展指明方向

科技热闻

提升团队合作效率,这10款可视化协作软件值得拥有!

彭宏豪95

团队协作 软件推荐 科技 在线白板 协同办公软件

什么是Vim,Vim安装

芯动大师

【最新破解秘钥】Vectorworks 2023 Mac必备3D建筑设计软件

Rose

3D建筑设计软件 Mac破解软件 Vectorworks 2023下载 Vectorworks 2023密钥

专访朱诗雄:Apache Spark中的全新流式引擎Structured Streaming_开源_Tina_InfoQ精选文章