NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

为什么越来越多的公司在使用 Spark Streaming

  • 2016-01-03
  • 本文字数:1607 字

    阅读完需:约 5 分钟

Databricks 最近对 1400 多家 Spark 用户进行了一次调查,结果显示这些用户对 Spark Streaming 的使用率与 2014 年相比增长了 56%,另外,有 48% 的受访者将 Spark Streaming 标记为最常用的 Spark 组件。在 Spark Streaming 不断增长的用户群中,Uber、Netflix 和 Pinterest 等家喻户晓的公司赫然在列,那么为什么使用 Spark Streaming 加速业务发展的公司越来越多呢?最近 Spark Streaming 的主要开发人员 Tathagata Das 在 DataNami 上发表了一篇文章,从需求、功能以及用户场景等方面对此进行了介绍

流分析的需求

现在,几乎所有的公司都是一家软件公司,它们实时地监控传感器、物联网设备、社交网络和在线事务系统产生的数据,然后通过大规模、实时的流处理系统对其进行分析从而实现快速响应。此外,公司还会使用这些数据生成日报和业务模型。也就是说,现代流处理框架不仅需要应对实时场景,还需要处理预处理和后处理等非实时场景。

例如,电商需要对用户在线购买时产生的数据(包括日期、时间、物品、价格等)进行实时分析完成广告推送和相关性推荐。银行需要使用训练好的欺诈模型实时地对每一笔交易进行检测从而定位欺诈行为。

Spark Streaming 不仅能够非常好地解决这些问题,同时它还统一了技术框架,使用了与 Spark 一致的编程模型和处理引擎。而在 Spark Streaming 出现之前,用户需要借助多种开源软件才能构建出具有流处理、批处理和机器学习能力的系统。

Spark Streaming 的能力

Spark Streaming 是在 2013 年被添加到 Apache Spark 中的,作为核心 Spark API 的扩展它允许数据工程师和数据科学家实时地处理来自于 Kafka、Flume 以及 Amazon Kinesis 等多种源的数据。这种对不同数据的统一处理能力就是 Spark Streaming 会被大家迅速采用的关键原因之一。
Spark Streaming 能够按照 batch size(如 1 秒)将输入数据分成一段段的离散数据流(Discretized Stream,即 DStream),这些流具有与 RDD 一致的核心数据抽象,能够与 MLlib 和 Spark SQL 等 Spark 组件无缝集成。
通过 Spark Streaming 开发者能够容易地使用一种框架满足所有的处理需求,例如通过 MLlib 离线训练模型,然后直接在 Spark Streaming 中使用训练好的模型在线处理实时数据。同时,开发者编写的代码和业务逻辑也能够在流处理、批处理和交互式处理引擎中共享和重用。此外,流数据源中的数据还可以与很多其他的 Spark SQL 能够访问的静态数据源进行联合。例如,在将 Amazon Redshift 的静态数据推送到下游系统之前,可以先将其加载到 Spark 的内存中进行处理以丰富流数据。

用例——从 Uber 到 Pinterest

虽然针对不同的目标和业务案例使用 Spark Streaming 的方式也不同,但其主要场景包括:

  • 流 ETL——将数据推入存储系统之前对其进行清洗和聚合
  • 触发器——实时检测异常行为并触发相关的处理逻辑
  • 数据浓缩——将实时数据与静态数据浓缩成更为精炼的数据以用于实时分析
  • 复杂会话和持续学习——将与实时会话相关的事件(例如用户登陆 Web 网站或者应用程序之后的行为)组合起来进行分析。

例如,Uber 通过 Kafka、Spark Streaming 和 HDFS 构建了持续性的 ETL 管道,该管道首先对每天从移动用户那里收集到的 TB 级的事件数据进行转换,将原始的非结构化事件数据转换成结构化的数据,然后再进行实时地遥测分析。Pinterest 的 ETL 数据管道始于 Kafka,通过 Spark Streaming 将数据推入 Spark 中实时分析全球用户对 Pin 的使用情况,从而优化推荐引擎为用户显示更相关的 Pin。Netflix 也是通过 Kafka 和 Spark Streaming 构建了实时引擎,对每天从各种数据源接收到的数十亿事件进行分析完成电影推荐。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2016-01-03 18:006914
用户头像

发布了 321 篇内容, 共 116.0 次阅读, 收获喜欢 18 次。

关注

评论

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

jdk8 String和StringBuilder对象创建所在位置

ilovealt

Java string StringBuilder

软件教练说:性能优化与性能设计,“相亲相爱”的一对

华为云开发者联盟

架构 性能优化 设计 程序 软件教练

JVM笔记 -- Java跨平台和JVM跨语言

秦怀杂货店

JVM JVM笔记

阿里内部Redis宝典意外流出极致经典:源码+实战+理论

比伯

Java 编程 程序员 架构 面试

Java学习笔记整理:Spring+tomcat+Kafka+多线程面试笔记

Java架构之路

Java 程序员 架构 面试 编程语言

故乡的年

熊斌

28天写作

架构师训练营第 2 期 第 7 周 作业一

老腊肉

架构师训练营第2期

NeoKylin-Server-5.0离线部署etcd+flannel集群,实现docker容器跨主机网络通信

星河寒水

Docker etcd flannel 麒麟操作系统 离线部署

面试官问:ZooKeeper是强一致的吗?怎么实现的?

Java 编程 程序员 面试 分布式

真狠!涵盖了Netty+Spark+Hadoop+分布式五部分!讲的清清楚楚!

996小迁

redis hadoop 架构 面试 Netty

阿里一线架构师甩出“源码阅读指南”,从源码到实战,一键搞定

比伯

Java 编程 程序员 架构 计算机

谁,是产品的利益相关方?

不离

极客大学认识产品经理 极客大学产品经理训练营 跟着二爷学产品

产业互联网业务与团队的思考

陈俊

半导体芯片小白基础知识(2) (28天写作 Day23/28)

mtfelix

集成电路 28天写作 晶圆 光刻机 晶圆代工

Redis击穿、穿透、雪崩产生原因以及解决思路

Java架构师迁哥

Mybatis【16】-- Mybatis多对一关联查询

秦怀杂货店

数据库 mybatis

学习JAVA8个月,成功跳槽,外包进阿里成功定级P7,太牛了!

Java 编程 程序员 面试

《程序员修炼之道》- 务实的方法(5)

石云升

程序员 28天写作 评估工作量

贪心算法

en

算法 贪心算法

深入浅出Android!阿里P7深入Binder原理讲解,论程序员成长的正确姿势

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第 2 期 第 8 周 作业一

老腊肉

架构师训练营第2期

老外程序员的Java性能优化方式是什么?JVM调优策略+工具+技巧

Java架构追梦

Java 学习 架构 面试 jvm调优

蚂蚁金服二面被血虐,鬼知道面试的我经历了什么?

Java架构之路

Java 程序员 架构 面试 编程语言

奇葩java迭代器笔试题,做对算你厉害

田维常

迭代器模式

成长篇-结构思考力笔记(完整版)

小诚信驿站

程序员 刘晓成 小诚信驿站 成长笔记 28天写作

《小狗钱钱》读书笔记

架构精进之路

读书笔记 七日更 28天写作

产品经理训练营笔记-产品思维和产品意识(下)

.nil?

产品经理训练营

30+程序员竞争力从哪里来?

我心依然

程序员 竞争力

BAT面试Spring全家桶:Spring+SpringBoot+SpringCloud+SpringMVC

Java架构之路

Java 程序员 架构 面试 编程语言

传统线程互斥技术 synchronized

武哥聊编程

Java 多线程 synchronized 28天写作

真正牛逼的人,都是极简主义者!!

冰河

产品 程序 极简主义

为什么越来越多的公司在使用Spark Streaming_语言 & 开发_孙镜涛_InfoQ精选文章