【观察】常用的流式框架(二)-- Spark与Flink

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介:
   Spark由加州大学伯克利分校于2009年开发,第二年开源,2014年成为Apache顶级项目。作为MapReduce的继任者,Spark可以提供高水准API(如RDD--可恢复分布式数据集;Dstream--离散无序的RDD),其社区在2015年就有超过1000名贡献者,知名的用户包括亚马逊、eBay、雅虎、IBM、百度等。
    2013年Spark Streaming成为Spark的核心,严格意义上说它是跑微批量(Micro-Batching)的架构,所以会有几秒钟的延时,但Spark Streaming支持丰富的状态数据、无重复传输并且扩展性极佳。一般地,流式数据经过Spark Streaming被切分成微批量,再由Spark引擎处理。

1

    Spark的一个应用就是统计网页访问量,可以用Python调取Spark Streming的接口,首先我们先读取服务端的站点地址(pageViews)并定义读取间隔,然后根据URL做Map算法将数据归类(ones--即每一个访问事件被定义为一个最小元素),最后使用Reduce算法将不同URL的GET事件聚合统计出浏览量。

2

    最后登场的是Flink,它于2010年由柏林工业大学、柏林洪堡大学和德国波茨坦普拉特拉学院联合开发,起初名字叫Stratosphere,在2014年进入Apache孵化计划并更名为Flink,2015年成为Apache顶级项目。Flink作为原生的流处理器,延时小于100毫秒;可以为应用提供流式或批量的虚拟API;支持数据表/SQL,CEP,机器学习,Gelly等多种特征库;目前的用户包括阿里巴巴、爱立信、奥拓,ResearchGate,Zalando等。
    Flink的架构将批量应用与流式应用在数据层汇聚,这个数据层可以分布式地部署在搭在Hadoop Yarn、Apache Mesos和Kubernetes上甚至可以单独作为集群搭建,无高可用之虞。此外Flink还提供多种API和库接口(有流式的及批量优化的)供第三方接入开发(Java/Scala/Python)

3

    Flink适合支持日事务处理量达几万亿条的应用、需要维护TB级状态数据的应用及有数千节点的应用,在处理大型状态数据的时候,Flink会将状态数据按时序分窗口按批次存储,恢复的时候也会从分布式文件系统种按批次恢复。

4

    当有任意Flink节点宕机时,系统是如何实现高可用的呢?Flink会将数据流按顺序切分成多个分区(Partition),然后为每个分区计算检查点(CheckPoints),在恢复节点时,只需重置检查点状态,然后将此检查点后的数据由别的节点上重播入宕机节点即可。

5

    介绍完了五种(Storm和Storm Trident算作两种,尽管)框架,我们来比较下他们的优劣势。

6

    对于数据的严密性,Storm和Samza都会检查至少一次;延时性角度Storm远小于100ms表现最优;但对于状态数据Storm和Trident只能处理小型数据,不及Samza、Spark Streaming和Flink;严格意义上说Trident和Spark Streaming是微批量的处理方式;由于Samza没有数据缓冲区,因此就不存在反压问题;除Storm外,另外四种架构都是能保证数据时序的;延展性方面,Strom、Trident和Spark Streaming表现更优,可以在运行时直接添加新的节点。
    根据在雅虎研究所的测试报告显示:“Storm和Flink的处理延时最低,Spark支持高的数据吞吐量,但代价就是会有较大延时。”
    除了这五大体系之外,还有一些非主流的流式处理系统,比如的google的Dataflow,IBM的InfoSphere Streams等,这里就不一一赘述了。

7

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
482 5
|
3月前
|
消息中间件 分布式计算 Kafka
Flink 1.16.2 版本在流式读取 Iceberg upsert primary key 表方面存在一些限制
Flink 1.16.2 版本在流式读取 Iceberg upsert primary key 表方面存在一些限制【1月更文挑战第14天】【1月更文挑战第69篇】
42 3
|
6天前
|
分布式计算 大数据 数据处理
【Flink】Flink跟Spark Streaming的区别?
【4月更文挑战第17天】【Flink】Flink跟Spark Streaming的区别?
|
10天前
|
运维 监控 Java
面经:Storm实时计算框架原理与应用场景
【4月更文挑战第11天】本文是关于Apache Storm实时流处理框架的面试攻略和核心原理解析。文章分享了面试常见主题,包括Storm的架构与核心概念(如Spout、Bolt、Topology、Tuple和Ack机制),编程模型与API,部署与运维,以及应用场景与最佳实践。通过代码示例展示了如何构建一个简单的WordCountTopology,强调理解和运用Storm的关键知识点对于面试和实际工作的重要性。
27 4
面经:Storm实时计算框架原理与应用场景
|
13天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
34 0
|
1月前
|
SQL API 数据处理
新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析
本文整理自阿里云开源大数据平台吕宴全关于新一代实时数据集成框架 Flink CDC 3.0 的核心技术架构解析。
719 0
新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析
|
2月前
|
消息中间件 监控 安全
【天衍系列 05】Flink集成KafkaSink组件:实现流式数据的可靠传输 & 高效协同
【天衍系列 05】Flink集成KafkaSink组件:实现流式数据的可靠传输 & 高效协同
|
2月前
|
SQL 并行计算 大数据
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
关于Flink服务的搭建与部署,由于其涉及诸多实战操作而理论部分相对较少,小编打算采用一个独立的版本和环境来进行详尽的实战讲解。考虑到文字描述可能无法充分展现操作的细节和流程,我们决定以视频的形式进行分析和介绍。因此,在本文中,我们将暂时不涉及具体的搭建和部署步骤。
496 3
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
|
3月前
|
API Apache 数据库
Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
206 0
|
3月前
|
SQL 存储 Apache
Paimon 实践 | 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
Paimon 实践 | 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
403 1